[vlc-commits] acoustid: remove useless cancellation handler, simplify

Rémi Denis-Courmont git at videolan.org
Tue Jul 7 22:04:00 CEST 2015


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Jul  7 19:12:32 2015 +0300| [63ef5806412c2da518edce1b2c0445796123c913] | committer: Rémi Denis-Courmont

acoustid: remove useless cancellation handler, simplify

There are no cancellation points in this function, so there is no point
cleaning up after those.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=63ef5806412c2da518edce1b2c0445796123c913
---

 modules/misc/webservices/acoustid.c |   77 ++++++++++++-----------------------
 1 file changed, 25 insertions(+), 52 deletions(-)

diff --git a/modules/misc/webservices/acoustid.c b/modules/misc/webservices/acoustid.c
index d19763d..012c1bd 100644
--- a/modules/misc/webservices/acoustid.c
+++ b/modules/misc/webservices/acoustid.c
@@ -150,50 +150,31 @@ error:
     return false;
 }
 
-struct webrequest_t
-{
-    stream_t *p_stream;
-    char *psz_url;
-    char *p_buffer;
-};
-
-static void cancelDoAcoustIdWebRequest( void *p_arg )
-{
-    struct webrequest_t *p_request = (struct webrequest_t *) p_arg;
-    if ( p_request->p_stream )
-        stream_Delete( p_request->p_stream );
-    free( p_request->psz_url );
-    free( p_request->p_buffer );
-}
-
 int DoAcoustIdWebRequest( vlc_object_t *p_obj, acoustid_fingerprint_t *p_data )
 {
-    int i_ret;
-    int i_status;
-    struct webrequest_t request = { NULL, NULL, NULL };
-
     if ( !p_data->psz_fingerprint ) return VLC_SUCCESS;
 
-    i_ret = asprintf( & request.psz_url,
-              "http://fingerprint.videolan.org/acoustid.php?meta=recordings+tracks+usermeta+releases&duration=%d&fingerprint=%s",
-              p_data->i_duration, p_data->psz_fingerprint );
-    if ( i_ret < 1 ) return VLC_EGENERIC;
-
-    vlc_cleanup_push( cancelDoAcoustIdWebRequest, &request );
+    char *psz_url;
+    if( unlikely(asprintf( &psz_url, "http://fingerprint.videolan.org/"
+                           "acoustid.php?meta=recordings+tracks+usermeta+"
+                           "releases&duration=%d&fingerprint=%s",
+                           p_data->i_duration, p_data->psz_fingerprint )) )
+         return VLC_EGENERIC;
 
-    msg_Dbg( p_obj, "Querying AcoustID from %s", request.psz_url );
+    msg_Dbg( p_obj, "Querying AcoustID from %s", psz_url );
     int i_saved_flags = p_obj->i_flags;
     p_obj->i_flags |= OBJECT_FLAGS_NOINTERACT;
-    request.p_stream = stream_UrlNew( p_obj, request.psz_url );
+
+    stream_t *p_stream = stream_UrlNew( p_obj, psz_url );
+
+    free( psz_url );
     p_obj->i_flags = i_saved_flags;
-    if ( !request.p_stream )
-    {
-        i_status = VLC_EGENERIC;
-        goto cleanup;
-    }
+    if ( p_stream == NULL )
+        return VLC_EGENERIC;
 
     /* read answer */
-    i_ret = 0;
+    char *p_buffer = NULL;
+    int i_ret = 0;
     for( ;; )
     {
         int i_read = 65536;
@@ -201,34 +182,26 @@ int DoAcoustIdWebRequest( vlc_object_t *p_obj, acoustid_fingerprint_t *p_data )
         if( i_ret >= INT_MAX - i_read )
             break;
 
-        request.p_buffer = realloc_or_free( request.p_buffer, 1 + i_ret + i_read );
-        if( !request.p_buffer )
+        p_buffer = realloc_or_free( p_buffer, 1 + i_ret + i_read );
+        if( unlikely(p_buffer == NULL) )
         {
-            i_status = VLC_ENOMEM;
-            goto cleanup;
+            stream_Delete( p_stream );
+            return VLC_ENOMEM;
         }
 
-        i_read = stream_Read( request.p_stream, &request.p_buffer[i_ret], i_read );
+        i_read = stream_Read( p_stream, &p_buffer[i_ret], i_read );
         if( i_read <= 0 )
             break;
 
         i_ret += i_read;
     }
-    stream_Delete( request.p_stream );
-    request.p_stream = NULL;
-    request.p_buffer[ i_ret ] = 0;
+    stream_Delete( p_stream );
+    p_buffer[i_ret] = 0;
 
-    int i_canc = vlc_savecancel();
-    if ( ParseJson( p_obj, request.p_buffer, & p_data->results ) )
-    {
+    if ( ParseJson( p_obj, p_buffer, & p_data->results ) )
         msg_Dbg( p_obj, "results count == %d", p_data->results.count );
-    } else {
+    else
         msg_Dbg( p_obj, "No results" );
-    }
-    vlc_restorecancel( i_canc );
-    i_status = VLC_SUCCESS;
 
-cleanup:
-    vlc_cleanup_run( );
-    return i_status;
+    return VLC_SUCCESS;
 }



More information about the vlc-commits mailing list