84 while (elm != NULL && elm->key.hash < hash) { |
84 while (elm != NULL && elm->key.hash < hash) { |
85 prev = elm; |
85 prev = elm; |
86 elm = elm->next; |
86 elm = elm->next; |
87 } |
87 } |
88 |
88 |
89 if (elm != NULL && elm->key.hash == hash) { |
89 if (elm != NULL && elm->key.hash == hash && elm->key.len == key.len && |
|
90 memcmp(elm->key.data.obj, key.data.obj, key.len) == 0) { |
90 // overwrite existing element |
91 // overwrite existing element |
91 elm->data = value; |
92 elm->data = value; |
92 } else { |
93 } else { |
93 // insert new element |
94 // allocate new element |
94 |
|
95 struct cx_hash_map_element_s *e = cxMalloc(allocator, sizeof(struct cx_hash_map_element_s)); |
95 struct cx_hash_map_element_s *e = cxMalloc(allocator, sizeof(struct cx_hash_map_element_s)); |
96 if (e == NULL) { |
96 if (e == NULL) { |
97 return -1; |
97 return -1; |
98 } |
98 } |
99 |
99 |