]> git.sesse.net Git - vlc/commitdiff
Introduce realloc_or_free() to src/*, and add assert() to mark unhandled ENOMEM error...
authorJP Dinger <jpd@videolan.org>
Sat, 5 Dec 2009 08:11:42 +0000 (09:11 +0100)
committerJP Dinger <jpd@videolan.org>
Sat, 5 Dec 2009 21:25:43 +0000 (22:25 +0100)
15 files changed:
src/control/media_list_path.h
src/extras/libc.c
src/input/es_out.c
src/input/input.c
src/input/stream.c
src/input/vlmshell.c
src/misc/messages.c
src/misc/objects.c
src/misc/variables.c
src/modules/entry.c
src/modules/modules.c
src/network/httpd.c
src/network/io.c
src/playlist/fetcher.c
src/text/strings.c

index 253edd6bd74d18ee7a5ddda19cbeaa7a92683bb0..994587ce56f31ee30145b0ab7713f1beea63b46a 100644 (file)
@@ -25,6 +25,9 @@
 #ifndef _LIBVLC_MEDIA_LIST_PATH_H
 #define _LIBVLC_MEDIA_LIST_PATH_H 1
 
+#include <assert.h>
+#include <vlc_memory.h>
+
 typedef int * libvlc_media_list_path_t; /* (Media List Player Internal) */
 
 /**************************************************************************
@@ -50,6 +53,7 @@ static inline void libvlc_media_list_path_dump( const libvlc_media_list_path_t p
 static inline libvlc_media_list_path_t libvlc_media_list_path_empty( void )
 {
     libvlc_media_list_path_t ret = malloc(sizeof(int));
+    assert( ret );
     ret[0] = -1;
     return ret;
 }
@@ -60,6 +64,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_empty( void )
 static inline libvlc_media_list_path_t libvlc_media_list_path_with_root_index( int index )
 {
     libvlc_media_list_path_t ret = malloc(sizeof(int)*2);
+    assert( ret );
     ret[0] = index;
     ret[1] = -1;
     return ret;
@@ -81,7 +86,8 @@ static inline int libvlc_media_list_path_depth( const libvlc_media_list_path_t p
 static inline void libvlc_media_list_path_append( libvlc_media_list_path_t * p_path, int index )
 {
     int old_depth = libvlc_media_list_path_depth( *p_path );
-    *p_path = realloc( *p_path, sizeof(int)*(old_depth+2));
+    *p_path = realloc_or_free( *p_path, sizeof(int)*(old_depth+2));
+    assert( *p_path );
     *p_path[old_depth] = index;
     *p_path[old_depth+1] = -1;
 }
@@ -94,6 +100,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_copy_by_appending(
     libvlc_media_list_path_t ret;
     int old_depth = libvlc_media_list_path_depth( path );
     ret = malloc( sizeof(int) * (old_depth + 2) );
+    assert( ret );
     memcpy( ret, path, sizeof(int) * old_depth );
     ret[old_depth] = index;
     ret[old_depth+1] = -1;
@@ -108,6 +115,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_copy( const libvlc
     libvlc_media_list_path_t ret;
     int depth = libvlc_media_list_path_depth( path );
     ret = malloc( sizeof(int)*(depth+1) );
+    assert( ret );
     memcpy( ret, path, sizeof(int)*(depth+1) );
     return ret;
 }
index ada9f6e2ed1b717e3009b9e0db50ca55e141d33d..568e482d8523e1ad68e8200bb03c222ebaca2f53 100644 (file)
@@ -30,6 +30,7 @@
 #endif
 
 #include <vlc_common.h>
+#include <vlc_memory.h>
 
 #include <ctype.h>
 
@@ -865,7 +866,8 @@ int __vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv,
               || i_read == 0 )
             break;
         *pi_data += i_read;
-        *pp_data = realloc( *pp_data, *pi_data + 1025 );
+        *pp_data = realloc_or_free( *pp_data, *pi_data + 1025 );
+        assert( *pp_data );
     }
 
     while ( !p_object->b_die
index f944502673f08153f11d76c199644424f3fd2441..a7c7c23a06c838637b0275c9db3df42b22a99f6d 100644 (file)
@@ -39,6 +39,8 @@
 #include <vlc_aout.h>
 #include <vlc_fourcc.h>
 
+#include <vlc_memory.h>
+
 #include "input_internal.h"
 #include "clock.h"
 #include "decoder.h"
@@ -2346,7 +2348,9 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
             if( p_fmt->i_extra )
             {
                 es->fmt.i_extra = p_fmt->i_extra;
-                es->fmt.p_extra = realloc( es->fmt.p_extra, p_fmt->i_extra );
+                es->fmt.p_extra = realloc_or_free( es->fmt.p_extra,
+                                                             p_fmt->i_extra );
+                assert( es->fmt.p_extra );
                 memcpy( es->fmt.p_extra, p_fmt->p_extra, p_fmt->i_extra );
 
                 if( !es->p_dec )
@@ -2358,7 +2362,8 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
 #else
                 es->p_dec->fmt_in.i_extra = p_fmt->i_extra;
                 es->p_dec->fmt_in.p_extra =
-                    realloc( es->p_dec->fmt_in.p_extra, p_fmt->i_extra );
+                  realloc_or_free( es->p_dec->fmt_in.p_extra, p_fmt->i_extra );
+                assert( es->p_dec->fmt_in.p_extra );
                 memcpy( es->p_dec->fmt_in.p_extra,
                         p_fmt->p_extra, p_fmt->i_extra );
 #endif
index ad3f04984832a5349a5b8bcf9244c16e24ffa644..3a3cf3c1efdafcdd56a5beb4876730db7d70e220 100644 (file)
@@ -30,6 +30,7 @@
 #endif
 
 #include <vlc_common.h>
+#include <vlc_memory.h>
 
 #include <ctype.h>
 #include <limits.h>
@@ -2925,8 +2926,9 @@ static void AppendAttachment( int *pi_attachment, input_attachment_t ***ppp_atta
     input_attachment_t **attachment = *ppp_attachment;
     int i;
 
-    attachment = realloc( attachment,
-                          sizeof(input_attachment_t**) * ( i_attachment + i_new ) );
+    attachment = realloc_or_free( attachment,
+                    sizeof(input_attachment_t**) * ( i_attachment + i_new ) );
+    assert( attachment );
     for( i = 0; i < i_new; i++ )
         attachment[i_attachment++] = pp_new[i];
     free( pp_new );
index b656822baf95bef969d8db3980c861d8ab8645a5..00ecbae76ca4cba87990828dd4d5186eba296ded 100644 (file)
@@ -32,6 +32,7 @@
 #include <vlc_strings.h>
 #include <vlc_osd.h>
 #include <vlc_charset.h>
+#include <vlc_memory.h>
 
 #include <libvlc.h>
 
@@ -805,7 +806,7 @@ static int AStreamPeekBlock( stream_t *s, const uint8_t **pp_peek, unsigned int
     /* We need to create a local copy */
     if( p_sys->i_peek < i_read )
     {
-        p_sys->p_peek = realloc( p_sys->p_peek, i_read );
+        p_sys->p_peek = realloc_or_free( p_sys->p_peek, i_read );
         if( !p_sys->p_peek )
         {
             p_sys->i_peek = 0;
@@ -1112,7 +1113,7 @@ static int AStreamPeekStream( stream_t *s, const uint8_t **pp_peek, unsigned int
 
     if( p_sys->i_peek < i_read )
     {
-        p_sys->p_peek = realloc( p_sys->p_peek, i_read );
+        p_sys->p_peek = realloc_or_free( p_sys->p_peek, i_read );
         if( !p_sys->p_peek )
         {
             p_sys->i_peek = 0;
@@ -1601,7 +1602,8 @@ char *stream_ReadLine( stream_t *s )
         if( psz_eol )
         {
             i_data = (psz_eol - (char *)p_data) + 1;
-            p_line = realloc( p_line, i_line + i_data + s->p_text->i_char_width ); /* add \0 */
+            p_line = realloc_or_free( p_line,
+                     i_line + i_data + s->p_text->i_char_width ); /* add \0 */
             if( !p_line )
                 goto error;
             i_data = stream_Read( s, &p_line[i_line], i_data );
@@ -1614,7 +1616,8 @@ char *stream_ReadLine( stream_t *s )
         }
 
         /* Read data (+1 for easy \0 append) */
-        p_line = realloc( p_line, i_line + STREAM_PROBE_LINE + s->p_text->i_char_width );
+        p_line = realloc_or_free( p_line,
+                       i_line + STREAM_PROBE_LINE + s->p_text->i_char_width );
         if( !p_line )
             goto error;
         i_data = stream_Read( s, &p_line[i_line], STREAM_PROBE_LINE );
index 22e5fc2499aff7d3ac2749c0b7a6227c20611d93..e9be2c50aa58e5333cd006ad96694a26875188d6 100644 (file)
@@ -31,6 +31,7 @@
 #endif
 
 #include <vlc_common.h>
+#include <vlc_memory.h>
 
 #include <stdio.h>
 #include <ctype.h>                                              /* tolower() */
@@ -640,7 +641,9 @@ static int ExecuteScheduleProperty( vlm_t *p_vlm, vlm_schedule_sys_t *p_schedule
             psz_line = strdup( ppsz_property[i] );
             for( j = i+1; j < i_property; j++ )
             {
-                psz_line = realloc( psz_line, strlen(psz_line) + strlen(ppsz_property[j]) + 1 + 1 );
+                psz_line = realloc_or_free( psz_line,
+                        strlen(psz_line) + strlen(ppsz_property[j]) + 1 + 1 );
+                assert( psz_line );
                 strcat( psz_line, " " );
                 strcat( psz_line, ppsz_property[j] );
             }
index eaafc8862bca05df0c68d077511c68ab83b96c26..f08a0a98cd2b9a118b147f0cc3d4699ae1e6267a 100644 (file)
@@ -33,6 +33,7 @@
 #endif
 
 #include <vlc_common.h>
+#include <vlc_memory.h>
 
 #include <stdarg.h>                                       /* va_list for BSD */
 
@@ -381,7 +382,6 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module,
     }
 
     msg_item_t * p_item = malloc (sizeof (*p_item));
-
     if (p_item == NULL)
         return; /* Uho! */
 
@@ -401,13 +401,15 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module,
             if( psz_header )
             {
                 psz_old = strdup( psz_header );
-                psz_header = (char*)realloc( psz_header, i_header_size );
+                psz_header = realloc_or_free( psz_header, i_header_size );
+                assert( psz_header );
                 snprintf( psz_header, i_header_size , "[%s] %s",
                           p_obj->psz_header, psz_old );
             }
             else
             {
-                psz_header = (char *)malloc( i_header_size );
+                psz_header = malloc( i_header_size );
+                assert( psz_header );
                 snprintf( psz_header, i_header_size, "[%s]",
                           p_obj->psz_header );
             }
index 3d5a13ed34a2cd2adcf9e1f1124ef6a8bc27d736..f53bf4eafa712b66f59b63926d7a26d648fb991a 100644 (file)
@@ -37,6 +37,7 @@
 #endif
 
 #include <vlc_common.h>
+#include <vlc_memory.h>
 
 #include "../libvlc.h"
 #include <vlc_aout.h>
@@ -1123,11 +1124,9 @@ static void DumpStructure( vlc_object_t *p_this, int i_level, char *psz_foo )
 
 static vlc_list_t * NewList( int i_count )
 {
-    vlc_list_t * p_list = (vlc_list_t *)malloc( sizeof( vlc_list_t ) );
+    vlc_list_t * p_list = malloc( sizeof( vlc_list_t ) );
     if( p_list == NULL )
-    {
         return NULL;
-    }
 
     p_list->i_count = i_count;
 
@@ -1169,8 +1168,8 @@ static void ListReplace( vlc_list_t *p_list, vlc_object_t *p_object,
         return;
     }
 
-    p_list->p_values = realloc( p_list->p_values, (p_list->i_count + 1)
-                                * sizeof( vlc_value_t ) );
+    p_list->p_values = realloc_or_free( p_list->p_values,
+                              (p_list->i_count + 1) * sizeof( vlc_value_t ) );
     if( p_list->p_values == NULL )
     {
         p_list->i_count = 0;
index 714ed58a09ebd397dbfc956137e123e35ee1ee66..23cd3d943c4596465f5e63b129f46e303e43b30f 100644 (file)
@@ -30,6 +30,7 @@
 
 #include <vlc_common.h>
 #include <vlc_charset.h>
+#include <vlc_memory.h>
 #include "variables.h"
 
 #include "libvlc.h"
@@ -217,8 +218,9 @@ int __var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )
 
     if( (p_priv->i_vars & 15) == 15 )
     {
-        p_priv->p_vars = realloc( p_priv->p_vars,
+        p_priv->p_vars = realloc_or_free( p_priv->p_vars,
                                   (p_priv->i_vars+17) * sizeof(variable_t) );
+        assert( p_priv->p_vars );
     }
 
     memmove( p_priv->p_vars + i_new + 1,
@@ -389,8 +391,10 @@ int __var_Destroy( vlc_object_t *p_this, const char *psz_name )
 
     if( (p_priv->i_vars & 15) == 0 )
     {
-        p_priv->p_vars = realloc( p_priv->p_vars,
-                          (p_priv->i_vars) * sizeof( variable_t ) );
+        variable_t *p_vars = realloc( p_priv->p_vars,
+                                    (p_priv->i_vars) * sizeof( variable_t ) );
+        if( p_vars )
+            p_priv->p_vars = p_vars;
     }
 
     p_priv->i_vars--;
index c97739dbd8ca7c69622dd4d9305814692ab84bac..a3679f17f727e701607a5c54acc06de30199d847 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
+#include <vlc_memory.h>
 #include <assert.h>
 #include <stdarg.h>
 
@@ -128,7 +129,7 @@ static module_config_t *vlc_config_create (module_t *module, int type)
 
     if ((confsize & 0xf) == 0)
     {
-        tab = realloc (tab, (confsize + 17) * sizeof (*tab));
+        tab = realloc_or_free (tab, (confsize + 17) * sizeof (*tab));
         if (tab == NULL)
             return NULL;
 
index ddb2b4bd2376db62956e424fdde43ae759aa7eb1..fe18c9337a9e890b31e230cb6e1d75ede65cde3b 100644 (file)
@@ -30,6 +30,7 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
+#include <vlc_memory.h>
 #include "libvlc.h"
 
 #include <stdlib.h>                                      /* free(), strtol() */
@@ -1077,7 +1078,7 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
     /* Add entry to cache */
     module_cache_t **pp_cache = p_bank->pp_cache;
 
-    pp_cache = realloc( pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
+    pp_cache = realloc_or_free( pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
     if( pp_cache == NULL )
         return -1;
     pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) );
index 910319492999b899f632fb2b6346ff86c12e7f66..c29250f61edac4226b46defcc318aeb7a7703b00 100644 (file)
@@ -563,7 +563,8 @@ httpd_HandlerCallBack( httpd_callback_sys_t *p_sys, httpd_client_t *cl,
         {
             p[4] = '\0';
             answer->i_body = strlen((char*)answer->p_body) + 1;
-            answer->p_body = realloc( answer->p_body, answer->i_body );
+            uint8_t *p_body = realloc( answer->p_body, answer->i_body );
+            if( p_body ) answer->p_body = p_body;
         }
     }
 
index c326adc383cb674ed78b6699e23befde5deb2232..4870a4d9bcd645fb8370f59da6814b750e0902c4 100644 (file)
@@ -55,6 +55,7 @@
 #endif
 
 #include <vlc_network.h>
+#include <vlc_memory.h>
 
 #ifndef INADDR_ANY
 #   define INADDR_ANY  0x00000000
@@ -522,7 +523,8 @@ char *__net_Gets( vlc_object_t *p_this, int fd, const v_socket_t *p_vs )
         if( i_line == i_max )
         {
             i_max += 1024;
-            psz_line = realloc( psz_line, i_max );
+            psz_line = realloc_or_free( psz_line, i_max );
+            assert( psz_line );
             ptr = psz_line + i_line;
         }
 
index d74f75f4d2514344bfb7961b2529ac17de33214b..eaecfd06adb645c228fae58df3d687e31d09e487 100644 (file)
 #include <vlc_stream.h>
 #include <limits.h>
 #include <vlc_art_finder.h>
+#include <vlc_memory.h>
 
 #include "art.h"
 #include "fetcher.h"
 #include "playlist_internal.h"
 
-
 /*****************************************************************************
  * Structures/definitions
  *****************************************************************************/
@@ -293,7 +293,7 @@ static int DownloadArt( playlist_fetcher_t *p_fetcher, input_item_t *p_item )
         if( i_data >= INT_MAX - i_read )
             break;
 
-        p_data = realloc( p_data, i_data + i_read );
+        p_data = realloc_or_free( p_data, i_data + i_read );
         if( !p_data )
             break;
 
index 11b16e205e78fe6ff7fd47cc62fb8097f900a49b..1c507c0fe4523885e56644d3a575584ee050ce6a 100644 (file)
@@ -607,6 +607,7 @@ char *str_format_time( const char *tformat )
                     {                                               \
                         int len = strlen( string );                 \
                         dst = realloc( dst, i_size = i_size + len );\
+                        assert( dst );                              \
                         memcpy( (dst+d), string, len );             \
                         d += len;                                   \
                         free( string );                             \
@@ -622,6 +623,7 @@ char *str_format_time( const char *tformat )
                     {                                               \
                         int len = strlen( string );                 \
                         dst = realloc( dst, i_size = i_size + len );\
+                        assert( dst );                              \
                         memcpy( dst+d, string, len );               \
                         d += len;                                   \
                     }