]> git.eshelyaron.com Git - emacs.git/commitdiff
(live_string_p, live_cons_p, live_symbol_p)
authorGerd Moellmann <gerd@gnu.org>
Thu, 29 Mar 2001 10:35:51 +0000 (10:35 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 29 Mar 2001 10:35:51 +0000 (10:35 +0000)
(live_float_p, live_misc_p): Return 1 only if the offset of the
pointer in its block is >= 0.

src/ChangeLog
src/alloc.c

index 9b9a5621068019148ce7bd902b83c444a6ce80cc..6a487b123e46dc068f2e3169c37d75b5a9cb5039 100644 (file)
@@ -1,3 +1,9 @@
+2001-03-29  Gerd Moellmann  <gerd@gnu.org>
+
+       * 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 <eggert@twinsun.com>
 
        * editfns.c (Ffloat_time): Fix off-by-factor-of-10 bug in the
index a79751f621392f668415d03c580782c57a5b07e3..a0c06a5c35bbdcc96ae950539f1e3f0fcec492a5 100644 (file)
@@ -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);