[PATCH 3/3] Fix build break on *BSD

Garrett Cooper yanegomi at gmail.com
Sun Dec 2 17:58:40 PST 2012


Linux uses alloca.h; many other operating systems define alloca(3) in
stdlib.h.

Signed-off-by: Garrett Cooper <yanegomi at gmail.com>
---
  configure.ac                                     | 1 +
  include/jemalloc/internal/jemalloc_internal.h.in | 6 +++++-
  include/jemalloc/jemalloc_defs.h.in              | 5 +++++
  3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 77a5110..8140f3c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -261,6 +261,7 @@ case "${host}" in
  	CFLAGS="$CFLAGS"
  	CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
  	abi="elf"
+	AC_DEFINE([JEMALLOC_HAS_ALLOCA_H])
  	AC_DEFINE([JEMALLOC_PURGE_MADVISE_DONTNEED], [ ])
  	AC_DEFINE([JEMALLOC_THREADED_INIT], [ ])
  	JEMALLOC_USABLE_SIZE_CONST=""
diff --git a/include/jemalloc/internal/jemalloc_internal.h.in b/include/jemalloc/internal/jemalloc_internal.h.in
index 475821a..484f351 100644
--- a/include/jemalloc/internal/jemalloc_internal.h.in
+++ b/include/jemalloc/internal/jemalloc_internal.h.in
@@ -359,7 +359,11 @@ static const bool config_ivsalloc =
  #    include <malloc.h>
  #    define alloca _alloca
  #  else
-#    include <alloca.h>
+#    ifdef JEMALLOC_HAS_ALLOCA_H
+#      include <alloca.h>
+#    else
+#      include <stdlib.h>
+#    endif
  #  endif
  #  define VARIABLE_ARRAY(type, name, count) \
  	type *name = alloca(sizeof(type) * count)
diff --git a/include/jemalloc/jemalloc_defs.h.in b/include/jemalloc/jemalloc_defs.h.in
index 1cd6025..3fcf93c 100644
--- a/include/jemalloc/jemalloc_defs.h.in
+++ b/include/jemalloc/jemalloc_defs.h.in
@@ -249,6 +249,11 @@
  #undef JEMALLOC_PURGE_MADVISE_DONTNEED
  #undef JEMALLOC_PURGE_MADVISE_FREE

+/*
+ * Define if operating system has alloca.h header.
+ */
+#undef JEMALLOC_HAS_ALLOCA_H
+
  /* sizeof(void *) == 2^LG_SIZEOF_PTR. */
  #undef LG_SIZEOF_PTR

-- 
1.8.0



More information about the jemalloc-discuss mailing list