浏览代码

Cope with autoconf's broken AC_FUNC_MALLOC macro, which redefines malloc as
rpl_malloc if it does not detect glibc style
returning-a-valid-pointer-for-malloc(0) behavior. This wrapper calls malloc()
as usual, but if N is zero, we allocate and return a 1-byte block instead....
sigh...

-Erik

Eric Andersen 22 年之前
父节点
当前提交
9389fe19a3
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12 0
      include/stdlib.h

+ 12 - 0
include/stdlib.h

@@ -547,6 +547,18 @@ extern void *malloc (size_t __size) __THROW __attribute_malloc__;
 /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
 extern void *calloc (size_t __nmemb, size_t __size)
      __THROW __attribute_malloc__;
+/* Cope with autoconf's broken AC_FUNC_MALLOC macro, which
+ * redefines malloc to rpl_malloc if it does not detect glibc
+ * style returning-a-valid-pointer-for-malloc(0) behavior.  This
+ * calls malloc() as usual, but if N is zero, we allocate and
+ * return a 1-byte block instead....  sigh... */ 
+static inline char * rpl_malloc (size_t N)
+{
+    if (N == 0) {
+	N++; 
+    }
+    return malloc (N);
+}   
 #endif
 
 #ifndef __need_malloc_and_calloc