diff options
| author | Tyge Løvset <[email protected]> | 2020-03-03 23:27:15 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-03-03 23:27:15 +0100 |
| commit | 8bf27012efb6fffed9bbc478f0c2b39ca04891cc (patch) | |
| tree | c99ce2759784d67b6bd383a74fddf35bda82354d | |
| parent | 0cde9c5984d0419ea59482df92423cbd574dfa2a (diff) | |
| download | STC-modified-8bf27012efb6fffed9bbc478f0c2b39ca04891cc.tar.gz STC-modified-8bf27012efb6fffed9bbc478f0c2b39ca04891cc.zip | |
A few fixes
| -rw-r--r-- | cmap.h | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -59,10 +59,11 @@ static inline CMap(tag) cmap_##tag##_init(void) { \ } \
\
static inline void cmap_##tag##_destroy(CMap(tag)* self) { \
- if (self->_size == 0) return; \
- cvector_size_t cap = cvector_capacity(self->_vec); \
- CMapEntry(tag)* p = self->_vec.data, *end = p + cap; \
- for (; p != end; ++p) if (p->_used) cmapentry_##tag##_destroy(p); \
+ if (self->_size) { \
+ cvector_size_t cap = _cvector_capacity(self->_vec); \
+ CMapEntry(tag)* p = self->_vec.data, *end = p + cap; \
+ for (; p != end; ++p) if (p->_used) cmapentry_##tag##_destroy(p); \
+ } \
cvector__map##tag##_destroy(&self->_vec); \
} \
\
@@ -75,7 +76,7 @@ static inline void cmap_##tag##_clear(CMap(tag)* self) { \ \
static inline CMapEntry(tag)* cmap_##tag##_get(CMap(tag) cm, KeyRaw rawKey) { \
if (cm._size == 0) return NULL; \
- cvector_size_t cap = cvector_capacity(cm._vec); \
+ cvector_size_t cap = _cvector_capacity(cm._vec); \
cvector_size_t idx = keyHasher(&rawKey, sizeof(Key)) % cap, first = idx; \
FIBONACCI_DECL; \
while (cm._vec.data[idx]._used && keyCompare(&cm._vec.data[idx].key, &rawKey, sizeof(Key)) != 0) \
@@ -88,8 +89,9 @@ static inline int cmap_##tag##_erase(CMap(tag)* self, KeyRaw rawKey) { \ if (entryPtr) { \
cmapentry_##tag##_destroy(entryPtr); \
--self->_size; \
+ return 1; \
} \
- return entryPtr != NULL; \
+ return 0; \
} \
\
static inline cvector_size_t cmap_##tag##_rehash(CMap(tag)* self); /* predeclared */ \
|
