changeset 13435:90d8e475ab29

Use modern idiom for realloc() replacement.
author Bruno Haible <bruno@clisp.org>
date Tue, 22 Jun 2010 00:07:30 +0200
parents 3075f4843802
children cb3c3063dacf
files ChangeLog m4/realloc.m4 modules/realloc
diffstat 3 files changed, 39 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+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.
--- 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
+])
--- a/modules/realloc
+++ b/modules/realloc
@@ -13,7 +13,7 @@
 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: