aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-09-09 13:30:31 +0200
committerMartin Willi <martin@strongswan.org>2009-09-09 16:24:21 +0200
commit1080a51fd21e7b672fcdd6c11b94b8a0191640fd (patch)
tree0b2dd92100ef8a535e98906d5c0bcb693368cb4e /src
parent1f45e32594c36cb4ab3b2369ef37bbe13850300b (diff)
downloadstrongswan-1080a51fd21e7b672fcdd6c11b94b8a0191640fd.tar.bz2
strongswan-1080a51fd21e7b672fcdd6c11b94b8a0191640fd.tar.xz
evaluate arguments of chunk_clone/clonea/alloc/alloca only once
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/chunk.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/libstrongswan/chunk.h b/src/libstrongswan/chunk.h
index 8ea6c8e42..f565f8486 100644
--- a/src/libstrongswan/chunk.h
+++ b/src/libstrongswan/chunk.h
@@ -181,22 +181,22 @@ static inline void chunk_clear(chunk_t *chunk)
/**
* Allocate a chunk on the heap
*/
-#define chunk_alloc(bytes) chunk_create(malloc(bytes), bytes)
+#define chunk_alloc(bytes) ({size_t x = (bytes); chunk_create(malloc(x), x);})
/**
* Allocate a chunk on the stack
*/
-#define chunk_alloca(bytes) chunk_create(alloca(bytes), bytes)
+#define chunk_alloca(bytes) ({size_t x = (bytes); chunk_create(alloca(x), x);})
/**
* Clone a chunk on heap
*/
-#define chunk_clone(chunk) chunk_create_clone((chunk).len ? malloc((chunk).len) : NULL, chunk)
+#define chunk_clone(chunk) ({chunk_t x = (chunk); chunk_create_clone(x.len ? malloc(x.len) : NULL, x);})
/**
* Clone a chunk on stack
*/
-#define chunk_clonea(chunk) chunk_create_clone(alloca((chunk).len), chunk)
+#define chunk_clonea(chunk) ({chunk_t x = (chunk); chunk_create_clone(alloca(x.len), x);})
/**
* Concatenate chunks into a chunk on heap