Properly handle zero length in chunk_alloc[a]/chunk_clone[a]

This commit is contained in:
Martin Willi
2010-08-16 17:06:27 +02:00
parent e8bf9d6e16
commit 806ec8b1d6
+3 -3
View File
@@ -193,12 +193,12 @@ static inline void chunk_clear(chunk_t *chunk)
/** /**
* Allocate a chunk on the heap * Allocate a chunk on the heap
*/ */
#define chunk_alloc(bytes) ({size_t x = (bytes); chunk_create(malloc(x), x);}) #define chunk_alloc(bytes) ({size_t x = (bytes); chunk_create(x ? malloc(x) : NULL, x);})
/** /**
* Allocate a chunk on the stack * Allocate a chunk on the stack
*/ */
#define chunk_alloca(bytes) ({size_t x = (bytes); chunk_create(alloca(x), x);}) #define chunk_alloca(bytes) ({size_t x = (bytes); chunk_create(x ? alloca(x) : NULL, x);})
/** /**
* Clone a chunk on heap * Clone a chunk on heap
@@ -208,7 +208,7 @@ static inline void chunk_clear(chunk_t *chunk)
/** /**
* Clone a chunk on stack * Clone a chunk on stack
*/ */
#define chunk_clonea(chunk) ({chunk_t x = (chunk); chunk_create_clone(alloca(x.len), x);}) #define chunk_clonea(chunk) ({chunk_t x = (chunk); chunk_create_clone(x.len ? alloca(x.len) : NULL, x);})
/** /**
* Concatenate chunks into a chunk on heap * Concatenate chunks into a chunk on heap