Changeset 5645:5d0d591fd4e6 in roaraudio


Ignore:
Timestamp:
09/11/12 21:15:21 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

make local copies of key names

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/kstore.c

    r5644 r5645  
    3939 
    4040struct binkv { 
    41  const char * key; 
     41 char * key; 
    4242 void * value; 
    4343}; 
     
    116116   if ( store->unref(store->kv[i].value) == -1 ) 
    117117    return -1; 
     118   roar_mm_free(store->kv[i].key); 
    118119   store->kv[i].key = NULL; 
    119120   store->kv[i].value = NULL; 
     
    129130int                  roar_kstore_add(struct roar_kstore * store, void * obj, const char * key) { 
    130131 size_t i; 
     132 int err; 
    131133 
    132134 if ( store == NULL ) { 
     
    155157  if ( store->kv[i].key != NULL ) 
    156158   continue; 
    157   if ( store->ref != NULL ) 
    158    if ( store->ref(obj) == -1 ) 
     159 
     160  store->kv[i].key = roar_mm_strdup(key); 
     161 
     162  if ( store->kv[i].key == NULL ) 
     163   return -1; 
     164 
     165  store->kv[i].value = obj; 
     166 
     167  if ( store->ref != NULL ) { 
     168   if ( store->ref(obj) == -1 ) { 
     169    err = roar_error; 
     170    roar_mm_free(store->kv[i].key); 
     171    store->kv[i].key = NULL; 
     172    roar_error = err; 
    159173    return -1; 
    160   store->kv[i].key = key; 
    161   store->kv[i].value = obj; 
     174   } 
     175  } 
    162176  return 0; 
    163177 } 
     
    201215    if ( store->unref(store->kv[i].value) == -1 ) 
    202216     return -1; 
     217   roar_mm_free(store->kv[i].key); 
    203218   store->kv[i].key = NULL; 
    204219   store->kv[i].value = NULL; 
     
    219234 } 
    220235 
    221  for (i = 0; i < store->len; i++) 
     236 for (i = 0; i < store->len; i++) { 
     237  ROAR_DBG("roar_kstore_name(store=%p, obj=%p): store->kv[%i].key=%p'%s', store->kv[%i].value=%p", store, obj, (int)i, store->kv[i].key, store->kv[i].key, (int)i, store->kv[i].value); 
    222238  if ( store->kv[i].key != NULL && store->kv[i].value == obj ) 
    223239   return store->kv[i].key; 
     240 } 
    224241 
    225242 roar_err_set(ROAR_ERROR_NOENT); 
Note: See TracChangeset for help on using the changeset viewer.