summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--m4/realloc.m431
-rw-r--r--modules/realloc2
3 files changed, 39 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 06d52799a3..339208bb8c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2010-06-21 Bruno Haible <bruno@clisp.org>
+ Use modern idiom for realloc() replacement.
+ * modules/realloc (configure.ac): Invoke gl_FUNC_REALLOC_GNU instead of
+ AC_FUNC_REALLOC.
+ * m4/realloc.m4 (gl_FUNC_REALLOC_GNU): New macro, mostly copied from
+ Autoconf's AC_FUNC_REALLOC.
+ (gl_FUNC_REALLOC_POSIX): Rely on gl_STDLIB_H_DEFAULTS to initialize
+ HAVE_REALLOC_POSIX. Invoke gl_REPLACE_REALLOC.
+ (gl_REPLACE_REALLOC): New macro.
+ Reported by Richard Lloyd <richard.lloyd@connectinternetsolutions.com>.
+
+2010-06-21 Bruno Haible <bruno@clisp.org>
+
Fix HAVE_MALLOC_POSIX misnomer.
* lib/stdlib.in.h (malloc): Use REPLACE_MALLOC instead of
!HAVE_MALLOC_POSIX.
diff --git a/m4/realloc.m4 b/m4/realloc.m4
index dc30235c17..0b8855656b 100644
--- a/m4/realloc.m4
+++ b/m4/realloc.m4
@@ -1,23 +1,44 @@
-# realloc.m4 serial 9
+# realloc.m4 serial 10
dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
+# gl_FUNC_REALLOC_GNU
+# -------------------
+# Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace
+# realloc if it is not.
+AC_DEFUN([gl_FUNC_REALLOC_GNU],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ dnl _AC_FUNC_REALLOC_IF is defined in Autoconf.
+ _AC_FUNC_REALLOC_IF(
+ [AC_DEFINE([HAVE_REALLOC], [1],
+ [Define to 1 if your system has a GNU libc compatible 'realloc'
+ function, and to 0 otherwise.])],
+ [AC_DEFINE([HAVE_REALLOC], [0])
+ gl_REPLACE_REALLOC
+ ])
+])# gl_FUNC_REALLOC_GNU
+
# gl_FUNC_REALLOC_POSIX
# ---------------------
# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
# fails), and replace realloc if it is not.
AC_DEFUN([gl_FUNC_REALLOC_POSIX],
[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
if test $gl_cv_func_malloc_posix = yes; then
- HAVE_REALLOC_POSIX=1
AC_DEFINE([HAVE_REALLOC_POSIX], [1],
[Define if the 'realloc' function is POSIX compliant.])
else
- AC_LIBOBJ([realloc])
- HAVE_REALLOC_POSIX=0
+ gl_REPLACE_REALLOC
fi
- AC_SUBST([HAVE_REALLOC_POSIX])
+])
+
+AC_DEFUN([gl_REPLACE_REALLOC],
+[
+ AC_LIBOBJ([realloc])
+ HAVE_REALLOC_POSIX=0
])
diff --git a/modules/realloc b/modules/realloc
index 4631ebfa91..d4f2167fca 100644
--- a/modules/realloc
+++ b/modules/realloc
@@ -13,7 +13,7 @@ Depends-on:
realloc-posix
configure.ac:
-AC_FUNC_REALLOC
+gl_FUNC_REALLOC_GNU
AC_DEFINE([GNULIB_REALLOC_GNU], 1, [Define to indicate the 'realloc' module.])
Makefile.am: