[OpenWrt-Devel] [PATCH 2/5] utils: refine calloc_a a bit.

Yousong Zhou yszhou4tech at gmail.com
Thu Jun 4 09:41:39 EDT 2015


 - Return early on calloc() failure.
 - Correct comment text for __calloc_a().

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 utils.c |    4 ++++
 utils.h |    6 +++---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/utils.c b/utils.c
index 8fd19f4..627b0f6 100644
--- a/utils.c
+++ b/utils.c
@@ -43,6 +43,10 @@ void *__calloc_a(size_t len, ...)
 	va_end(ap1);
 
 	ptr = calloc(1, alloc_len);
+	if (!ptr) {
+		va_end(ap);
+		return NULL;
+	}
 	alloc_len = 0;
 	foreach_arg(ap, cur_addr, cur_len, &ret, len) {
 		*cur_addr = &ptr[alloc_len];
diff --git a/utils.h b/utils.h
index d00e76b..9456f72 100644
--- a/utils.h
+++ b/utils.h
@@ -25,8 +25,10 @@
 #include <stdbool.h>
 #include <time.h>
 
+#define calloc_a(len, ...) __calloc_a(len, ##__VA_ARGS__, NULL)
+
 /*
- * calloc_a(size_t len, [void **addr, size_t len,...], NULL)
+ * __calloc_a(size_t len, [void **addr, size_t len,...], NULL)
  *
  * allocate a block of memory big enough to hold multiple aligned objects.
  * the pointer to the full object (starting with the first chunk) is returned,
@@ -34,8 +36,6 @@
  * the last argument needs to be a NULL pointer
  */
 
-#define calloc_a(len, ...) __calloc_a(len, ##__VA_ARGS__, NULL)
-
 void *__calloc_a(size_t len, ...);
 
 #ifndef ARRAY_SIZE
-- 
1.7.10.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list