aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFelipe Oliveira Carvalho <felipekde@gmail.com>2014-04-05 16:54:01 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-04-07 00:22:01 -0300
commitfac85c17248ab8c371fb311c1dd4bc1b2a7520cf (patch)
tree431f4fb73eb063ac4a123c61c043a1d833b00682 /src/lib
parentfa02ada73257336641ebb29a9ea0b626c176c011 (diff)
downloadrneovim-fac85c17248ab8c371fb311c1dd4bc1b2a7520cf.tar.gz
rneovim-fac85c17248ab8c371fb311c1dd4bc1b2a7520cf.tar.bz2
rneovim-fac85c17248ab8c371fb311c1dd4bc1b2a7520cf.zip
Implement xcalloc and use it in klist.h (use xrealloc as well)
Bonus: implement lalloc_clear and alloc_clear using xcalloc
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/klist.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/klist.h b/src/lib/klist.h
index 1061d9869e..bb60449915 100644
--- a/src/lib/klist.h
+++ b/src/lib/klist.h
@@ -28,13 +28,15 @@
#include <stdlib.h>
+#include "memory.h"
+
#define KMEMPOOL_INIT(name, kmptype_t, kmpfree_f) \
typedef struct { \
size_t cnt, n, max; \
kmptype_t **buf; \
} kmp_##name##_t; \
static inline kmp_##name##_t *kmp_init_##name() { \
- return calloc(1, sizeof(kmp_##name##_t)); \
+ return xcalloc(1, sizeof(kmp_##name##_t)); \
} \
static inline void kmp_destroy_##name(kmp_##name##_t *mp) { \
size_t k; \
@@ -45,14 +47,14 @@
} \
static inline kmptype_t *kmp_alloc_##name(kmp_##name##_t *mp) { \
++mp->cnt; \
- if (mp->n == 0) return calloc(1, sizeof(kmptype_t)); \
+ if (mp->n == 0) return xcalloc(1, sizeof(kmptype_t)); \
return mp->buf[--mp->n]; \
} \
static inline void kmp_free_##name(kmp_##name##_t *mp, kmptype_t *p) { \
--mp->cnt; \
if (mp->n == mp->max) { \
mp->max = mp->max? mp->max<<1 : 16; \
- mp->buf = realloc(mp->buf, sizeof(void*) * mp->max); \
+ mp->buf = xrealloc(mp->buf, sizeof(void*) * mp->max); \
} \
mp->buf[mp->n++] = p; \
}
@@ -76,7 +78,7 @@
size_t size; \
} kl_##name##_t; \
static inline kl_##name##_t *kl_init_##name() { \
- kl_##name##_t *kl = calloc(1, sizeof(kl_##name##_t)); \
+ kl_##name##_t *kl = xcalloc(1, sizeof(kl_##name##_t)); \
kl->mp = kmp_init(name); \
kl->head = kl->tail = kmp_alloc(name, kl->mp); \
kl->head->next = 0; \