summaryrefslogtreecommitdiff
path: root/lib/obstack.h
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-08-10 05:16:29 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-08-10 05:16:29 +0000
commit3dec705e020f4e9a0dcd618b5addcf9bc7fb2bb6 (patch)
tree9154ddf220886b789d1bc01e16760c2c58824f76 /lib/obstack.h
parent17c3e95e58ee80cd93037161057d7e29e6e2f8f5 (diff)
downloadgnulib-3dec705e020f4e9a0dcd618b5addcf9bc7fb2bb6.tar.gz
(obstack_empty_p): Don't assume that chunk->contents is suitably
aligned.
Diffstat (limited to 'lib/obstack.h')
-rw-r--r--lib/obstack.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/obstack.h b/lib/obstack.h
index d46b0544a4..46a1cb781a 100644
--- a/lib/obstack.h
+++ b/lib/obstack.h
@@ -287,7 +287,10 @@ __extension__ \
# define obstack_empty_p(OBSTACK) \
__extension__ \
({ struct obstack const *__o = (OBSTACK); \
- (__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
+ (__o->chunk->prev == 0 \
+ && __o->next_free == __PTR_ALIGN ((char *) __o->chunk, \
+ __o->chunk->contents, \
+ __o->alignment_mask)); })
# define obstack_grow(OBSTACK,where,length) \
__extension__ \
@@ -411,7 +414,10 @@ __extension__ \
(unsigned) ((h)->chunk_limit - (h)->next_free)
# define obstack_empty_p(h) \
- ((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
+ ((h)->chunk->prev == 0 \
+ && (h)->next_free == __PTR_ALIGN ((char *) (h)->chunk, \
+ (h)->chunk->contents, \
+ (h)->alignment_mask))
/* Note that the call to _obstack_newchunk is enclosed in (..., 0)
so that we can avoid having void expressions