summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge <[email protected]>2020-04-30 20:14:30 +0200
committerTyge <[email protected]>2020-04-30 20:14:30 +0200
commit06730c58577bc984e3ab7bf656b61382d763efef (patch)
treeb06ba668580e8308262bae5c33230690366d98f3
parent5ff4f6aa3327b8ab403f51dd5499a4ece6a97aca (diff)
downloadSTC-modified-06730c58577bc984e3ab7bf656b61382d763efef.tar.gz
STC-modified-06730c58577bc984e3ab7bf656b61382d763efef.zip
Added missing #include <malloc.h>, and redefined default equal.
-rw-r--r--stc/cdefs.h5
-rw-r--r--stc/cmap.h7
2 files changed, 7 insertions, 5 deletions
diff --git a/stc/cdefs.h b/stc/cdefs.h
index 249089fa..5831e948 100644
--- a/stc/cdefs.h
+++ b/stc/cdefs.h
@@ -61,9 +61,10 @@
#define c_defaultInitRaw(x) (x)
#define c_defaultGetRaw(ptr) (*(ptr))
-#define c_noCompare(x, y) (0)
#define c_defaultCompare(x, y) (*(x) == *(y) ? 0 : *(x) < *(y) ? -1 : 1)
-#define c_defaultEquals(x, y) (memcmp(x, y, sizeof(*(y))) == 0)
+#define c_noCompare(x, y) (0)
+#define c_defaultEquals(x, y) (*(x) == *(y))
+#define c_memEquals(x, y) (memcmp(x, y, sizeof(*(y))) == 0)
#define c_noDestroy(p) ((void)0)
#define c_foreach(it, prefix, container) \
diff --git a/stc/cmap.h b/stc/cmap.h
index 96144e64..095b9210 100644
--- a/stc/cmap.h
+++ b/stc/cmap.h
@@ -42,6 +42,7 @@ int main(void) {
#ifndef CMAP__H__
#define CMAP__H__
+#include <malloc.h>
#include "cdefs.h"
#define cmap_init {NULL, NULL, 0, 0, 90, 0}
@@ -297,15 +298,15 @@ cmap_##tag##_erase(CMap_##tag* self, cmap_##tag##_rawkey_t rawKey) { \
size_t i = cmap_##tag##_bucket(self, &rawKey, &hx), j = i, k; \
CMapEntry_##tag* slot = self->_table; \
uint8_t* hashx = self->_hashx; \
+ cmap_##tag##_rawkey_t r; \
if (! hashx[i]) \
return false; \
- cmap_##tag##_rawkey_t r; \
do { /* deletion from hash table without tombstone */ \
if (++j == cap) j = 0; /* ++j %= cap; is slow */ \
if (! hashx[j]) \
break; \
- k = cmap_reduce(keyHashRaw((r = keyGetRaw(&slot[j].key), &r), \
- sizeof(cmap_##tag##_rawkey_t)), cap); \
+ r = keyGetRaw(&slot[j].key); \
+ k = cmap_reduce(keyHashRaw(&r, sizeof(cmap_##tag##_rawkey_t)), cap); \
if ((j < i) ^ (k <= i) ^ (k > j)) /* is k outside (i, j]? */ \
slot[i] = slot[j], hashx[i] = hashx[j], i = j; \
} while (true); \