]> git.sesse.net Git - vlc/blobdiff - src/text/strings.c
correct realloc() usage, on failure realloc will return NULL
[vlc] / src / text / strings.c
index 9c6d9315e107c8912cd06ce99bbb701d9319313d..4a2da5c9ead76a1bf37661756437e45bc3a625ad 100644 (file)
@@ -699,11 +699,16 @@ char *str_format_time( const char *tformat )
 #define INSERT_STRING( string )                                     \
                     if( string != NULL )                            \
                     {                                               \
+                        char *tmp;                                  \
                         int len = strlen( string );                 \
-                        dst = realloc( dst, i_size = i_size + len );\
-                        memcpy( (dst+d), string, len );             \
-                        d += len;                                   \
-                        free( string );                             \
+                        tmp = realloc( dst, i_size = i_size + len );\
+                        if( tmp )                                   \
+                        {                                           \
+                            dst = tmp;                              \
+                            memcpy( (dst+d), string, len );         \
+                            d += len;                               \
+                            free( string );                         \
+                        }                                           \
                     }                                               \
                     else if( !b_empty_if_na )                       \
                     {                                               \
@@ -714,10 +719,15 @@ char *str_format_time( const char *tformat )
 /* same than INSERT_STRING, except that string won't be freed */
 #define INSERT_STRING_NO_FREE( string )                             \
                     {                                               \
+                        char *tmp;                                  \
                         int len = strlen( string );                 \
-                        dst = realloc( dst, i_size = i_size + len );\
-                        memcpy( dst+d, string, len );               \
-                        d += len;                                   \
+                        tmp = realloc( dst, i_size = i_size + len );\
+                        if( tmp )                                   \
+                        {                                           \
+                            dst = tmp;                              \
+                            memcpy( dst+d, string, len );           \
+                            d += len;                               \
+                        }                                           \
                     }
 char *__str_format_meta( vlc_object_t *p_object, const char *string )
 {