]> git.sesse.net Git - vlc/blobdiff - include/vlc_arrays.h
Add block_shm_Alloc()
[vlc] / include / vlc_arrays.h
index 68ea1e248023b524d76dafedab934f9821541fcc..2b57fdc3d1044e1c538d3f9b5a716413a038ae83 100644 (file)
@@ -40,16 +40,11 @@ static inline void *realloc_down( void *ptr, size_t size )
 /**
  * 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) )                                           \
         {                                                                     \
@@ -193,8 +188,8 @@ static inline void *realloc_down( void *ptr, size_t size )
 /* 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();                                         \
 }
 
@@ -451,7 +446,15 @@ static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict,
     p_dict->i_size = 0;
 }
 
+static inline int
+vlc_dictionary_has_key( const vlc_dictionary_t * p_dict, const char * psz_key )
+{
+    if( !p_dict->p_entries )
+        return 0;
 
+    int i_pos = DictHash( psz_key, p_dict->i_size );
+    return p_dict->p_entries[i_pos] != NULL;
+}
 
 static inline void *
 vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_key )
@@ -499,6 +502,8 @@ vlc_dictionary_all_keys( const vlc_dictionary_t * p_dict )
     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++ )