aboutsummaryrefslogtreecommitdiffhomepage
path: root/mem.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-06-17 23:26:45 +0200
committerlemon <lsof@mailbox.org>2023-06-17 23:26:45 +0200
commit962ad175aee634274b408ead38b13e6bc90e2fe7 (patch)
treecfda733adf56ed12e829f594e0b6d66f0a1a7a70 /mem.c
parentec28e9057e84b92acabb7ebf9122af59738917ad (diff)
basic ELF output
Diffstat (limited to 'mem.c')
-rw-r--r--mem.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/mem.c b/mem.c
index 4817b7d..ad2082d 100644
--- a/mem.c
+++ b/mem.c
@@ -50,7 +50,7 @@ vpush_(void **p, int *pcap, uint *pn, uint siz)
*pcap = -cap;
} else if (*pn == -*pcap) { /* dyn buf */
*p = xrealloc(*p, -(*pcap *= 2) * siz);
- }
+ } else return;
assert(-(volatile int)*pcap > *pn && "overflow");
}
@@ -221,7 +221,7 @@ pmap_init_(struct pmapbase *m, void **v, uint vsiz, uint N)
m->N = N;
}
-int pmap_get_(struct pmapbase *m, void *k)
+int pmap_get_(struct pmapbase *m, const void *k)
{
assert(k && "null key");
if (!m->N) return -1;
@@ -239,7 +239,7 @@ pmap_rehash(struct pmapbase *m, void **v, uint vsiz)
int i, j;
void *k;
void *newv;
- uint N2 = m->N << 1,
+ uint N2 = m->N ? m->N << 1 : 16,
sizk = N2*sizeof*m->k,
sizv = N2*vsiz;
@@ -265,7 +265,7 @@ pmap_rehash(struct pmapbase *m, void **v, uint vsiz)
m->N = N2;
}
-int pmap_set_(struct pmapbase *m, void **v, uint vsiz, void *k)
+int pmap_set_(struct pmapbase *m, void **v, uint vsiz, const void *k)
{
assert(k && "null key");
if (m->n >= m->N >> 1) {
@@ -277,7 +277,7 @@ int pmap_set_(struct pmapbase *m, void **v, uint vsiz, void *k)
if (m->k[i] == k)
return i;
if (!m->k[i]) {
- m->k[i] = k;
+ m->k[i] = (void *)k;
++m->n;
return i;
}