Mercurial > hg > octave-nkf > gnulib-hg
changeset 17790:1313252b8540
obstack: do not assume system-supplied obstack is size_t safe
* m4/obstack.m4: New file.
* modules/obstack (Files): Add it.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Mon, 03 Nov 2014 16:36:27 -0800 |
parents | 47c2be5d17f0 |
children | bfa82dd4206c |
files | ChangeLog m4/obstack.m4 modules/obstack |
diffstat | 3 files changed, 40 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2014-11-03 Paul Eggert <eggert@cs.ucla.edu> + 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 <alignof.h> if !defined __alignof__, not if !_LIBC. We don't know of any platforms that #define
new file mode 100644 --- /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 +])