fix hashmap iterator skipping the second element in some cases

Mon, 20 Mar 2023 18:05:12 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 20 Mar 2023 18:05:12 +0100
changeset 665
c4041b07165e
parent 664
af5bf4603a5d
child 666
b5dd654deb3b

fix hashmap iterator skipping the second element in some cases

src/hash_map.c file | annotate | diff | comparison | revisions
     1.1 --- a/src/hash_map.c	Tue Mar 14 20:25:24 2023 +0100
     1.2 +++ b/src/hash_map.c	Mon Mar 20 18:05:12 2023 +0100
     1.3 @@ -339,8 +339,8 @@
     1.4      if (map->size > 0) {
     1.5          struct cx_hash_map_s *hash_map = (struct cx_hash_map_s *) map;
     1.6          struct cx_hash_map_element_s *elm = hash_map->buckets[0];
     1.7 -        for (; elm == NULL; iter.slot++) {
     1.8 -            elm = hash_map->buckets[iter.slot];
     1.9 +        while (elm == NULL) {
    1.10 +            elm = hash_map->buckets[++iter.slot];
    1.11          }
    1.12          iter.elem_handle = elm;
    1.13          iter.kv_data.key = &elm->key;

mercurial