[vlc-commits] rtsp: fix memory leaks and factorize (cid #1048938)

Rémi Duraffort git at videolan.org
Mon Dec 2 08:43:33 CET 2013


vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Mon Dec  2 08:42:40 2013 +0100| [f5c082b5c5c012fcf7095fec366612da5329e846] | committer: Rémi Duraffort

rtsp: fix memory leaks and factorize (cid #1048938)

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

 modules/misc/rtsp.c |   33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/modules/misc/rtsp.c b/modules/misc/rtsp.c
index d484c25..434c76e 100644
--- a/modules/misc/rtsp.c
+++ b/modules/misc/rtsp.c
@@ -369,16 +369,15 @@ static vod_media_t *MediaNew( vod_t *p_vod, const char *psz_name,
 
     if( asprintf( &p_media->psz_rtsp_path, "%s%s",
                   p_sys->psz_path, psz_name ) <0 )
-        return NULL;
+        goto error;
+
     p_media->p_rtsp_url =
         httpd_UrlNew( p_sys->p_rtsp_host, p_media->psz_rtsp_path, NULL, NULL );
 
     if( !p_media->p_rtsp_url )
     {
         msg_Err( p_vod, "cannot create RTSP url (%s)", p_media->psz_rtsp_path);
-        free( p_media->psz_rtsp_path );
-        free( p_media );
-        return NULL;
+        goto error;
     }
 
     msg_Dbg( p_vod, "created RTSP url: %s", p_media->psz_rtsp_path );
@@ -386,21 +385,12 @@ static vod_media_t *MediaNew( vod_t *p_vod, const char *psz_name,
     if( asprintf( &p_media->psz_rtsp_control_v4,
                   "rtsp://%%s:%%d%s/trackID=%%d",
                   p_media->psz_rtsp_path ) < 0 )
-    {
-        httpd_UrlDelete( p_media->p_rtsp_url );
-        free( p_media->psz_rtsp_path );
-        free( p_media );
-        return NULL;
-    }
+        goto error;
+
     if( asprintf( &p_media->psz_rtsp_control_v6,
                   "rtsp://[%%s]:%%d%s/trackID=%%d",
                   p_media->psz_rtsp_path ) < 0 )
-    {
-        httpd_UrlDelete( p_media->p_rtsp_url );
-        free( p_media->psz_rtsp_path );
-        free( p_media );
-        return NULL;
-    }
+        goto error;
 
     httpd_UrlCatch( p_media->p_rtsp_url, HTTPD_MSG_SETUP,
                     RtspCallback, (void*)p_media );
@@ -431,6 +421,17 @@ static vod_media_t *MediaNew( vod_t *p_vod, const char *psz_name,
 
     CommandPush( p_vod, RTSP_CMD_TYPE_ADD, p_media, NULL, 0, 0.0, NULL );
     return p_media;
+
+error:
+    if( p_media )
+    {
+        free( p_media->psz_rtsp_control_v4 );
+        if( p_media->p_rtsp_url )
+            httpd_UrlDelete( p_media->p_rtsp_url );
+        free( p_media->psz_rtsp_path );
+        free( p_media );
+    }
+    return NULL;
 }
 
 static void MediaAskDel ( vod_t *p_vod, vod_media_t *p_media )



More information about the vlc-commits mailing list