Mercurial > emacs
changeset 37049:184d1fb71cc1
(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.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 29 Mar 2001 10:35:24 +0000 |
parents | 92d84a200c07 |
children | 26cc1684baff |
files | src/alloc.c |
diffstat | 1 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/alloc.c Thu Mar 29 00:29:04 2001 +0000 +++ b/src/alloc.c Thu Mar 29 10:35:24 2001 +0000 @@ -3114,7 +3114,8 @@ /* 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 @@ /* 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 @@ /* 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 @@ /* 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 @@ /* 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);