From 035a186cc20f21354720c51cc303b6c0d6017c5f Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 3 Nov 2014 16:36:27 -0800 Subject: [PATCH 2/4] obstack: do not assume system-supplied obstack is size_t safe * m4/obstack.m4: New file. * modules/obstack (Files): Add it. --- ChangeLog | 4 ++++ m4/obstack.m4 | 35 +++++++++++++++++++++++++++++++++++ modules/obstack | 1 + 3 files changed, 40 insertions(+) create mode 100644 m4/obstack.m4 diff --git a/ChangeLog b/ChangeLog index 274b794..23accbe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2014-11-03 Paul Eggert + obstack: do not assume system-supplied obstack is size_t safe + * m4/obstack.m4: New file. + * modules/obstack (Files): Add it. + obstack: port to platforms that #define __alignof__ * lib/obstack.c: Include if !defined __alignof__, not if !_LIBC. We don't know of any platforms that #define diff --git a/m4/obstack.m4 b/m4/obstack.m4 new file mode 100644 index 0000000..bc5b4a4 --- /dev/null +++ b/m4/obstack.m4 @@ -0,0 +1,35 @@ +# See if we need to provide obstacks. + +dnl Copyright 1996-2014 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. + +dnl This replaces Autoconf's AC_FUNC_OBSTACK. +dnl The Autoconf version should be marked obsolete at some point. + +AC_DEFUN([AC_FUNC_OBSTACK], + [AC_LIBSOURCES([obstack.h, obstack.c])dnl + AC_CACHE_CHECK([for obstacks that work with any size object], + [ac_cv_func_obstack], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include "obstack.h" + void *obstack_chunk_alloc (size_t n) { return 0; } + void obstack_chunk_free (void *p) { } + /* Check that an internal function returns size_t, not int. */ + size_t _obstack_memory_used (struct obstack *); + ]], + [[struct obstack mem; + obstack_init (&mem); + obstack_free (&mem, 0); + ]])], + [ac_cv_func_obstack=yes], + [ac_cv_func_obstack=no])]) + if test "$ac_cv_func_obstack" = yes; then + AC_DEFINE([HAVE_OBSTACK], 1, + [Define to 1 if the system has obstacks that work with any size object.]) + else + AC_LIBOBJ([obstack]) + fi +]) diff --git a/modules/obstack b/modules/obstack index 36dc444..e0b528e 100644 --- a/modules/obstack +++ b/modules/obstack @@ -4,6 +4,7 @@ Memory allocation, optimized for stack-like allocation patterns. Files: lib/obstack.h lib/obstack.c +m4/obstack.m4 Depends-on: alignof -- 1.9.3