From: Gerd Moellmann Date: Thu, 29 Mar 2001 10:35:51 +0000 (+0000) Subject: (live_string_p, live_cons_p, live_symbol_p) X-Git-Tag: emacs-pretest-21.0.101~124 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=176bc847137c3c61c2fc03edc9293aa3d2fb8548;p=emacs.git (live_string_p, live_cons_p, live_symbol_p) (live_float_p, live_misc_p): Return 1 only if the offset of the pointer in its block is >= 0. --- diff --git a/src/ChangeLog b/src/ChangeLog index 9b9a5621068..6a487b123e4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2001-03-29 Gerd Moellmann + + * alloc.c (live_string_p, live_cons_p, live_symbol_p) + (live_float_p, live_misc_p): Return 1 only if the offset of the + pointer in its block is >= 0. + 2001-03-28 Paul Eggert * editfns.c (Ffloat_time): Fix off-by-factor-of-10 bug in the diff --git a/src/alloc.c b/src/alloc.c index a79751f6213..a0c06a5c35b 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -3114,7 +3114,8 @@ live_string_p (m, p) /* P must point to the start of a Lisp_String structure, and it must not be on the free-list. */ - return (offset % sizeof b->strings[0] == 0 + return (offset >= 0 + && offset % sizeof b->strings[0] == 0 && ((struct Lisp_String *) p)->data != NULL); } else @@ -3138,7 +3139,8 @@ live_cons_p (m, p) /* P must point to the start of a Lisp_Cons, not be one of the unused cells in the current cons block, and not be on the free-list. */ - return (offset % sizeof b->conses[0] == 0 + return (offset >= 0 + && offset % sizeof b->conses[0] == 0 && (b != cons_block || offset / sizeof b->conses[0] < cons_block_index) && !EQ (((struct Lisp_Cons *) p)->car, Vdead)); @@ -3164,7 +3166,8 @@ live_symbol_p (m, p) /* P must point to the start of a Lisp_Symbol, not be one of the unused cells in the current symbol block, and not be on the free-list. */ - return (offset % sizeof b->symbols[0] == 0 + return (offset >= 0 + && offset % sizeof b->symbols[0] == 0 && (b != symbol_block || offset / sizeof b->symbols[0] < symbol_block_index) && !EQ (((struct Lisp_Symbol *) p)->function, Vdead)); @@ -3190,7 +3193,8 @@ live_float_p (m, p) /* P must point to the start of a Lisp_Float, not be one of the unused cells in the current float block, and not be on the free-list. */ - return (offset % sizeof b->floats[0] == 0 + return (offset >= 0 + && offset % sizeof b->floats[0] == 0 && (b != float_block || offset / sizeof b->floats[0] < float_block_index) && !EQ (((struct Lisp_Float *) p)->type, Vdead)); @@ -3216,7 +3220,8 @@ live_misc_p (m, p) /* P must point to the start of a Lisp_Misc, not be one of the unused cells in the current misc block, and not be on the free-list. */ - return (offset % sizeof b->markers[0] == 0 + return (offset >= 0 + && offset % sizeof b->markers[0] == 0 && (b != marker_block || offset / sizeof b->markers[0] < marker_block_index) && ((union Lisp_Misc *) p)->u_marker.type != Lisp_Misc_Free);