X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fobstack.c;h=63396131c3ab3e7dea1d198193c75624f11585d9;hb=931c1209da16cb5488643b8c84c5263563320334;hp=8ce49ad8cca18c41a4e6ea235316e93223bf2a82;hpb=d2cffec544f98047457b91ba5ec62c26975885d5;p=gnulib.git diff --git a/lib/obstack.c b/lib/obstack.c index 8ce49ad8c..63396131c 100644 --- a/lib/obstack.c +++ b/lib/obstack.c @@ -1,7 +1,7 @@ /* obstack.c - subroutines used implicitly by object stack macros Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -24,6 +24,7 @@ #ifdef _LIBC # include +# include #else # include "obstack.h" #endif @@ -59,19 +60,31 @@ #ifndef ELIDE_CODE +# if HAVE_INTTYPES_H +# include +# endif +# if HAVE_STDINT_H || defined _LIBC +# include +# endif + /* Determine default alignment. */ union fooround { - long int i; + uintmax_t i; long double d; void *p; }; +struct fooalign +{ + char c; + union fooround u; +}; /* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT. But in fact it might be less smart and round addresses to as much as DEFAULT_ROUNDING. So we prepare for it to do that. */ enum { - DEFAULT_ALIGNMENT = offsetof (struct { char c; union fooround u; }, u), + DEFAULT_ALIGNMENT = offsetof (struct fooalign, u), DEFAULT_ROUNDING = sizeof (union fooround) }; @@ -103,10 +116,13 @@ int obstack_exit_failure = EXIT_FAILURE; # endif # ifdef _LIBC +# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) /* A looong time ago (before 1994, anyway; we're not sure) this global variable was used by non-GNU-C macros to avoid multiple evaluation. The GNU C library still exports it because somebody might use it. */ -struct obstack *_obstack; +struct obstack *_obstack_compat; +compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0); +# endif # endif /* Define a macro that either calls functions with the traditional malloc/free