[vlc-devel] commit: codec_cmml: fix memleaks ( and maybe a proble while opening browser under linux). ( Rémi Duraffort )

git version control git at videolan.org
Mon Jan 26 22:57:38 CET 2009


vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Mon Jan 26 22:33:00 2009 +0100| [e3895ba9fd5709f60af6d0f517ae5eb334de40aa] | committer: Rémi Duraffort 

codec_cmml: fix memleaks (and maybe a proble while opening browser under linux).

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

 modules/codec/cmml/browser_open.c |   43 ++++++++++++++++++++++++-------------
 1 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/modules/codec/cmml/browser_open.c b/modules/codec/cmml/browser_open.c
index 5a1edb7..4295a5f 100644
--- a/modules/codec/cmml/browser_open.c
+++ b/modules/codec/cmml/browser_open.c
@@ -28,29 +28,38 @@
 # include "config.h"
 #endif
 
-#include "xstrcat.h"
+#include <stdio.h>
+#include <stdlib.h>
+
 #include "browser_open.h"
 
+
 int browser_Open( const char *psz_url )
 {
 #ifdef __APPLE__
     char *psz_open_commandline;
+    int i_ret;
 
-    psz_open_commandline = strdup( "/usr/bin/open " );
-    psz_open_commandline = xstrcat( psz_open_commandline, psz_url );
+    if( asprintf( &psz_open_commandline, "/usr/bin/open %s", psz_url ) == -1 )
+        return -1;
 
-    return system( psz_open_commandline );
+    i_ret = system( psz_open_commandline );
+    free( psz_open_commandline );
+    return i_ret;
 
 #elif defined( UNDER_CE )
     return -1;
 
 #elif defined( WIN32 )
     char *psz_open_commandline;
+    int i_ret;
 
-    psz_open_commandline = strdup( "explorer " );
-    xstrcat( psz_open_commandline, psz_url );
+    if( asprintf( &psz_open_commandline, "explorer %s", psz_url ) == -1 )
+        return -1;
 
-    return system( psz_open_commandline );
+    i_ret = system( psz_open_commandline );
+    free( psz_open_commandline );
+    return i_ret;
 
 #else
     /* Assume we're on a UNIX of some sort */
@@ -58,18 +67,22 @@ int browser_Open( const char *psz_url )
     int i_ret;
 
     /* Debian uses www-browser */
-    psz_open_commandline = strdup( "www-browser" );
-    xstrcat( psz_open_commandline, psz_url );
-    i_ret = system( psz_open_commandline );
-
-    if( i_ret == 0 ) return 0;
+    if( asprintf( &psz_open_commandline, "www-browser %s", psz_url ) == -1 )
+        return -1;
 
+    i_ret = system( psz_open_commandline );
     free( psz_open_commandline );
 
+    if( i_ret == 0 )
+        return 0;
+
     /* Try mozilla */
-    psz_open_commandline = strdup( "mozilla" );
-    xstrcat( psz_open_commandline, psz_url );
-    return system( psz_open_commandline );
+    if( asprintf( &psz_open_commandline, "mozilla %s", psz_url ) == -1 )
+        return -1;
+
+    i_ret = system( psz_open_commandline );
+    free( psz_open_commandline );
+    return i_ret;
 #endif
 }
 




More information about the vlc-devel mailing list