Subversion Repositories HelenOS

Rev

Rev 4192 | Rev 4243 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4192 Rev 4197
Line 81... Line 81...
81
int name##_add( name##_ref map, int key, type * value ){                        \
81
int name##_add( name##_ref map, int key, type * value ){                        \
82
    if( name##_is_valid( map )){                                                \
82
    if( name##_is_valid( map )){                                                \
83
        if( map->next == ( map->size - 1 )){                                    \
83
        if( map->next == ( map->size - 1 )){                                    \
84
            name##_item_ref tmp;                                                \
84
            name##_item_ref tmp;                                                \
85
                                                                                \
85
                                                                                \
86
            tmp = ( name##_item_ref ) malloc( sizeof( name##_item_t ) * 2 * map->size );    \
86
            tmp = ( name##_item_ref ) realloc( map->items, sizeof( name##_item_t ) * 2 * map->size );   \
87
            if( ! tmp ) return ENOMEM;                                          \
87
            if( ! tmp ) return ENOMEM;                                          \
88
            map->size *= 2;                                                     \
88
            map->size *= 2;                                                     \
89
            memcpy( tmp, map->items, sizeof( name##_item_t ) * map->next );     \
-
 
90
            free( map->items );                                                 \
-
 
91
            map->items = tmp;                                                   \
89
            map->items = tmp;                                                   \
92
        }                                                                       \
90
        }                                                                       \
93
        map->items[ map->next ].key = key;                                      \
91
        map->items[ map->next ].key = key;                                      \
94
        map->items[ map->next ].value = value;                                  \
92
        map->items[ map->next ].value = value;                                  \
95
        map->items[ map->next ].magic = INT_MAP_ITEM_MAGIC_VALUE;               \
93
        map->items[ map->next ].magic = INT_MAP_ITEM_MAGIC_VALUE;               \