src/hash_map.c

changeset 690
2c2304622981
parent 688
c27fa8b67286
child 691
65baf7f45ac8
     1.1 --- a/src/hash_map.c	Thu Apr 20 19:13:25 2023 +0200
     1.2 +++ b/src/hash_map.c	Fri Apr 21 18:38:18 2023 +0200
     1.3 @@ -51,7 +51,7 @@
     1.4                  // invoke the destructor
     1.5                  cx_invoke_destructor(map, elem->data);
     1.6                  // free the key data
     1.7 -                cxFree(map->allocator, elem->key.data.obj);
     1.8 +                cxFree(map->allocator, (void *) elem->key.data);
     1.9                  // free the node
    1.10                  cxFree(map->allocator, elem);
    1.11                  // proceed
    1.12 @@ -100,7 +100,7 @@
    1.13      }
    1.14  
    1.15      if (elm != NULL && elm->key.hash == hash && elm->key.len == key.len &&
    1.16 -        memcmp(elm->key.data.obj, key.data.obj, key.len) == 0) {
    1.17 +        memcmp(elm->key.data, key.data, key.len) == 0) {
    1.18          // overwrite existing element
    1.19          if (map->store_pointer) {
    1.20              memcpy(elm->data, &value, sizeof(void *));
    1.21 @@ -129,8 +129,8 @@
    1.22          if (kd == NULL) {
    1.23              return -1;
    1.24          }
    1.25 -        memcpy(kd, key.data.obj, key.len);
    1.26 -        e->key.data.obj = kd;
    1.27 +        memcpy(kd, key.data, key.len);
    1.28 +        e->key.data = kd;
    1.29          e->key.len = key.len;
    1.30          e->key.hash = hash;
    1.31  
    1.32 @@ -162,7 +162,7 @@
    1.33          prev->next = elm->next;
    1.34      }
    1.35      // free element
    1.36 -    cxFree(hash_map->base.allocator, elm->key.data.obj);
    1.37 +    cxFree(hash_map->base.allocator, (void *) elm->key.data);
    1.38      cxFree(hash_map->base.allocator, elm);
    1.39      // decrease size
    1.40      hash_map->base.size--;
    1.41 @@ -196,7 +196,7 @@
    1.42      struct cx_hash_map_element_s *prev = NULL;
    1.43      while (elm && elm->key.hash <= hash) {
    1.44          if (elm->key.hash == hash && elm->key.len == key.len) {
    1.45 -            if (memcmp(elm->key.data.obj, key.data.obj, key.len) == 0) {
    1.46 +            if (memcmp(elm->key.data, key.data, key.len) == 0) {
    1.47                  void *data = NULL;
    1.48                  if (destroy) {
    1.49                      cx_invoke_destructor(map, elm->data);

mercurial