(obstack_empty_p): Don't assume that chunk->contents is suitably
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 10 Aug 2004 05:16:29 +0000 (05:16 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 10 Aug 2004 05:16:29 +0000 (05:16 +0000)
aligned.

lib/obstack.h

index d46b054..46a1cb7 100644 (file)
@@ -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