summaryrefslogtreecommitdiff
path: root/c/zone.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/zone.h')
-rw-r--r--c/zone.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/c/zone.h b/c/zone.h
index a3dfe41..79b51f8 100644
--- a/c/zone.h
+++ b/c/zone.h
@@ -66,6 +66,7 @@ msgpack_zone* msgpack_zone_new(size_t chunk_size);
void msgpack_zone_free(msgpack_zone* zone);
static inline void* msgpack_zone_malloc(msgpack_zone* zone, size_t size);
+static inline void* msgpack_zone_malloc_no_align(msgpack_zone* zone, size_t size);
static inline bool msgpack_zone_push_finalizer(msgpack_zone* zone,
void (*func)(void* data), void* data);
@@ -82,10 +83,8 @@ void msgpack_zone_clear(msgpack_zone* zone);
void* msgpack_zone_malloc_expand(msgpack_zone* zone, size_t size);
-void* msgpack_zone_malloc(msgpack_zone* zone, size_t size)
+void* msgpack_zone_malloc_no_align(msgpack_zone* zone, size_t size)
{
- size = ((size)+((MSGPACK_ZONE_ALIGN)-1)) & ~((MSGPACK_ZONE_ALIGN)-1);
-
msgpack_zone_chunk* chunk = zone->chunk_array.tail;
if(chunk->free < size) {
@@ -99,6 +98,12 @@ void* msgpack_zone_malloc(msgpack_zone* zone, size_t size)
return ptr;
}
+void* msgpack_zone_malloc(msgpack_zone* zone, size_t size)
+{
+ return msgpack_zone_malloc_no_align(zone,
+ ((size)+((MSGPACK_ZONE_ALIGN)-1)) & ~((MSGPACK_ZONE_ALIGN)-1));
+}
+
bool msgpack_zone_push_finalizer_expand(msgpack_zone* zone,
void (*func)(void* data), void* data);