2011-04-08 Paul Eggert <eggert@cs.ucla.edu>
+ stdlib: let modules use system malloc, realloc
+ * lib/stdlib.in.h (malloc, realloc): Don't #define or add warnings
+ if !_GL_USE_STDLIB_ALLOC.
+
careadlinkat: rename members to avoid problem
* lib/allocator.h (struct allocator): Rename members from
malloc/realloc to allocate/reallocate, to avoid problems if malloc
# endif
#endif
-#if @GNULIB_MALLOC_POSIX@
-# if @REPLACE_MALLOC@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# undef malloc
-# define malloc rpl_malloc
-# endif
+/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
+ rely on GNU or POSIX semantics for malloc and realloc (for example,
+ by never specifying a zero size), so it does not need malloc or
+ realloc to be redefined. */
+#if !_GL_USE_STDLIB_ALLOC
+# if @GNULIB_MALLOC_POSIX@
+# if @REPLACE_MALLOC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef malloc
+# define malloc rpl_malloc
+# endif
_GL_FUNCDECL_RPL (malloc, void *, (size_t size));
_GL_CXXALIAS_RPL (malloc, void *, (size_t size));
-# else
+# else
_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
-# endif
+# endif
_GL_CXXALIASWARN (malloc);
-#elif defined GNULIB_POSIXCHECK
-# undef malloc
+# elif defined GNULIB_POSIXCHECK
+# undef malloc
/* Assume malloc is always declared. */
_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
"use gnulib module malloc-posix for portability");
+# endif
#endif
/* Convert a multibyte character to a wide character. */
#endif
-#if @GNULIB_REALLOC_POSIX@
-# if @REPLACE_REALLOC@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# undef realloc
-# define realloc rpl_realloc
-# endif
+#if !_GL_USE_STDLIB_ALLOC
+# if @GNULIB_REALLOC_POSIX@
+# if @REPLACE_REALLOC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef realloc
+# define realloc rpl_realloc
+# endif
_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
-# else
+# else
_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
-# endif
+# endif
_GL_CXXALIASWARN (realloc);
-#elif defined GNULIB_POSIXCHECK
-# undef realloc
+# elif defined GNULIB_POSIXCHECK
+# undef realloc
/* Assume realloc is always declared. */
_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
"use gnulib module realloc-posix for portability");
+# endif
#endif
#if @GNULIB_REALPATH@