Use modern idiom for malloc() replacement.
authorBruno Haible <bruno@clisp.org>
Mon, 21 Jun 2010 21:58:08 +0000 (23:58 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 21 Jun 2010 21:58:08 +0000 (23:58 +0200)
ChangeLog
m4/malloc.m4
modules/malloc

index 27099b8f50fc057f1137b50d09679188b54c69d8..93e23e1ff369ce325f0c25df3ba90526b0ac9f26 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2010-06-21  Bruno Haible  <bruno@clisp.org>
+
+       Use modern idiom for malloc() replacement.
+       * modules/malloc (configure.ac): Invoke gl_FUNC_MALLOC_GNU instead of
+       AC_FUNC_MALLOC.
+       * m4/malloc.m4 (gl_FUNC_MALLOC_GNU): New macro, mostly copied from
+       Autoconf's AC_FUNC_MALLOC.
+       (gl_FUNC_MALLOC_POSIX): Rely on gl_STDLIB_H_DEFAULTS to initialize
+       HAVE_MALLOC_POSIX. Invoke gl_REPLACE_MALLOC.
+       (gl_REPLACE_MALLOC): New macro.
+       Reported by Richard Lloyd <richard.lloyd@connectinternetsolutions.com>.
+
 2010-06-20  Richard Lloyd  <richard.lloyd@connectinternetsolutions.com>
 
        stdio.in.h: fix compilation failure when using HP-UX 11's C compiler
index 910ac92292c8c9b2840ad1e9c8cfcb8d9a867f4c..6f2f936f6fff95c3d656d4a2c8a9f802c940a1f3 100644 (file)
@@ -1,25 +1,40 @@
-# malloc.m4 serial 9
+# malloc.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_MALLOC_GNU
+# ------------------
+# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
+# it is not.
+AC_DEFUN([gl_FUNC_MALLOC_GNU],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
+  _AC_FUNC_MALLOC_IF(
+    [AC_DEFINE([HAVE_MALLOC], [1],
+               [Define to 1 if your system has a GNU libc compatible 'malloc'
+                function, and to 0 otherwise.])],
+    [AC_DEFINE([HAVE_MALLOC], [0])
+     gl_REPLACE_MALLOC
+    ])
+])
+
 # gl_FUNC_MALLOC_POSIX
 # --------------------
 # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
 # fails), and replace malloc if it is not.
 AC_DEFUN([gl_FUNC_MALLOC_POSIX],
 [
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
   AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
   if test $gl_cv_func_malloc_posix = yes; then
-    HAVE_MALLOC_POSIX=1
     AC_DEFINE([HAVE_MALLOC_POSIX], [1],
       [Define if the 'malloc' function is POSIX compliant.])
   else
-    AC_LIBOBJ([malloc])
-    HAVE_MALLOC_POSIX=0
+    gl_REPLACE_MALLOC
   fi
-  AC_SUBST([HAVE_MALLOC_POSIX])
 ])
 
 # Test whether malloc, realloc, calloc are POSIX compliant,
@@ -39,3 +54,9 @@ AC_DEFUN([gl_CHECK_MALLOC_POSIX],
         ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no])
     ])
 ])
+
+AC_DEFUN([gl_REPLACE_MALLOC],
+[
+  AC_LIBOBJ([malloc])
+  HAVE_MALLOC_POSIX=0
+])
index 8fcb0a34c2b36f4474a688efa76508b70f442e3a..eb6ab6ac38b09678a5502f4e6f36514fe7cdce73 100644 (file)
@@ -13,7 +13,7 @@ Depends-on:
 malloc-posix
 
 configure.ac:
-AC_FUNC_MALLOC
+gl_FUNC_MALLOC_GNU
 AC_DEFINE([GNULIB_MALLOC_GNU], 1, [Define to indicate the 'malloc' module.])
 
 Makefile.am: