1.1 --- a/ucx/map.c Mon Jul 15 13:53:51 2013 +0200 1.2 +++ b/ucx/map.c Mon Jul 15 14:25:50 2013 +0200 1.3 @@ -88,7 +88,7 @@ 1.4 copy_func fnc, void *data) { 1.5 UcxMapIterator i = ucx_map_iterator(from); 1.6 void *value; 1.7 - UCX_MAP_FOREACH(value, i) { 1.8 + UCX_MAP_FOREACH(key, value, i) { 1.9 int ret = ucx_map_put(to, i.cur->key, fnc ? fnc(value, data) : value); 1.10 if(ret != 0) { 1.11 return 1; 1.12 @@ -282,7 +282,7 @@ 1.13 return i; 1.14 } 1.15 1.16 -int ucx_map_iter_next(UcxMapIterator *i, void **elm) { 1.17 +int ucx_map_iter_next(UcxMapIterator *i, UcxKey *key, void **elm) { 1.18 UcxMapElement *e = i->cur; 1.19 1.20 if(e == NULL) { 1.21 @@ -296,6 +296,7 @@ 1.22 if(e->data != NULL) { 1.23 i->cur = e; 1.24 *elm = e->data; 1.25 + *key = e->key; 1.26 return 0; 1.27 } 1.28 1.29 @@ -402,13 +403,12 @@ 1.30 int ucx_map_store_enc(UcxMap *map, FILE *f, 1.31 ucx_map_coder encoder, void *encdata) { 1.32 UcxMapIterator iter = ucx_map_iterator(map); 1.33 - char *k, *v; 1.34 + char *v; 1.35 sstr_t key, value; 1.36 size_t written; 1.37 1.38 - UCX_MAP_FOREACH(v, iter) { 1.39 - k = (char*) iter.cur->key.data; 1.40 - key = sstrn(k, iter.cur->key.len); 1.41 + UCX_MAP_FOREACH(k, v, iter) { 1.42 + key = sstrn(k.data, k.len); 1.43 if (encoder) { 1.44 size_t encodedSize; 1.45 void *encoded = encoder(v, encdata, &encodedSize);