4
dnl Determine whether malloc accepts 0 as its argument.
5
dnl If it doesn't, arrange to use the replacement function.
8
AC_DEFUN([jm_FUNC_MALLOC],
2
dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
3
dnl This file is free software; the Free Software Foundation
4
dnl gives unlimited permission to copy and/or distribute it,
5
dnl with or without modifications, as long as this notice is preserved.
9
# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
10
# fails), and replace malloc if it is not.
11
AC_DEFUN([gl_FUNC_MALLOC_POSIX],
10
dnl xmalloc.c requires that this symbol be defined so it doesn't
11
dnl mistakenly use a broken malloc -- as it might if this test were omitted.
12
AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1,
13
[Define if the malloc check has been performed. ])
15
AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc,
21
exit (malloc (0) ? 0 : 1);
24
jm_cv_func_working_malloc=yes,
25
jm_cv_func_working_malloc=no,
26
dnl When crosscompiling, assume malloc is broken.
27
jm_cv_func_working_malloc=no)
29
if test $jm_cv_func_working_malloc = no; then
31
AC_DEFINE(malloc, rpl_malloc,
32
[Define to rpl_malloc if the replacement function should be used.])
13
AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
14
if test $gl_cv_func_malloc_posix = yes; then
16
AC_DEFINE([HAVE_MALLOC_POSIX], [1],
17
[Define if the 'malloc' function is POSIX compliant.])
22
AC_SUBST([HAVE_MALLOC_POSIX])
25
# Test whether malloc, realloc, calloc are POSIX compliant,
26
# Set gl_cv_func_malloc_posix to yes or no accordingly.
27
AC_DEFUN([gl_CHECK_MALLOC_POSIX],
29
AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
30
[gl_cv_func_malloc_posix],
32
dnl It is too dangerous to try to allocate a large amount of memory:
33
dnl some systems go to their knees when you do that. So assume that
34
dnl all Unix implementations of the function are POSIX compliant.
36
[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
39
], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no])