/**
* Simple dynamic array handling. Array is realloced at each insert/removal
*/
-#if defined( _MSC_VER ) && _MSC_VER < 1300 && !defined( UNDER_CE )
-# define VLCCVP (void**) /* Work-around for broken compiler */
-#else
-# define VLCCVP
-#endif
#define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem ) \
do \
{ \
if( !(i_oldsize) ) (p_ar) = NULL; \
- (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \
+ (p_ar) = realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \
if( !(p_ar) ) abort(); \
if( (i_oldsize) - (i_pos) ) \
{ \
#define TAB_APPEND_CAST( cast, count, tab, p ) \
do { \
if( (count) > 0 ) \
- (tab) = cast realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \
+ (tab) = cast realloc( tab, sizeof( *(tab) ) * ( (count) + 1 ) ); \
else \
- (tab) = cast malloc( sizeof( void ** ) ); \
+ (tab) = cast malloc( sizeof( *(tab) ) ); \
if( !(tab) ) abort(); \
(tab)[count] = (p); \
(count)++; \
#define TAB_APPEND( count, tab, p ) \
TAB_APPEND_CAST( , count, tab, p )
-#define TAB_FIND( count, tab, p, index ) \
+#define TAB_FIND( count, tab, p, idx ) \
do { \
- (index) = -1; \
- for( int i = 0; i < (count); i++ ) \
- if( (tab)[i] == (p) ) \
- { \
- (index) = i; \
+ for( (idx) = 0; (idx) < (count); (idx)++ ) \
+ if( (tab)[(idx)] == (p) ) \
break; \
- } \
+ if( (idx) >= (count) ) \
+ (idx) = -1; \
} while(0)
{ \
memmove( ((void**)(tab) + i_index), \
((void**)(tab) + i_index+1), \
- ( (count) - i_index - 1 ) * sizeof( void* ) );\
+ ( (count) - i_index - 1 ) * sizeof( *(tab) ) );\
} \
(count)--; \
if( (count) == 0 ) \
#define TAB_INSERT_CAST( cast, count, tab, p, index ) do { \
if( (count) > 0 ) \
- (tab) = cast realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \
+ (tab) = cast realloc( tab, sizeof( *(tab) ) * ( (count) + 1 ) ); \
else \
- (tab) = cast malloc( sizeof( void ** ) ); \
+ (tab) = cast malloc( sizeof( *(tab) ) ); \
if( !(tab) ) abort(); \
if( (count) - (index) > 0 ) \
memmove( (void**)(tab) + (index) + 1, \
/* Internal functions */
#define _ARRAY_ALLOC(array, newsize) { \
(array).i_alloc = newsize; \
- (array).p_elems = VLCCVP realloc( (array).p_elems, (array).i_alloc * \
- sizeof(*(array).p_elems) ); \
+ (array).p_elems = realloc( (array).p_elems, (array).i_alloc * \
+ sizeof(*(array).p_elems) ); \
if( !(array).p_elems ) abort(); \
}
int i, count = vlc_dictionary_keys_count( p_dict );
ppsz_ret = (char**)malloc(sizeof(char *) * (count + 1));
+ if( unlikely(!ppsz_ret) )
+ return NULL;
count = 0;
for( i = 0; i < p_dict->i_size; i++ )