]> git.eshelyaron.com Git - emacs.git/commitdiff
Reverse the meaning of 2nd arg to 'live_buffer_holding'
authorEli Zaretskii <eliz@gnu.org>
Sun, 15 Mar 2020 14:47:54 +0000 (16:47 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sun, 15 Mar 2020 14:47:54 +0000 (16:47 +0200)
* src/alloc.c (live_buffer_holding): Rename ALL_BUFFERS ti
IGNORE_KILLED, and reverse the condition for returning killed
buffers.
(live_buffer_p): Add commentary.
(live_buffer_p, mark_maybe_object, mark_maybe_pointer): Reverse
the 2nd argument to live_buffer_holding.  (Bug#39962)

src/alloc.c

index 3d1090c383dad6e0990f8248df128821defe80bf..eed73bcdc4eb7bc5836319eaa83a04deeb3512da 100644 (file)
@@ -4596,12 +4596,12 @@ live_vector_p (struct mem_node *m, void *p)
   return !NILP (live_vector_holding (m, p));
 }
 
-/* If P is a pointer into a live buffer, return the buffer.
+/* If P is a pointer into a valid buffer object, return the buffer.
    Otherwise, return nil.  M is a pointer to the mem_block for P.
-   Also return killed buffers if ALL-BUFFERS is true.  */
+   If IGNORE_KILLED is non-zero, treat killed buffers as invalid.  */
 
 static Lisp_Object
-live_buffer_holding (struct mem_node *m, void *p, bool all_buffers)
+live_buffer_holding (struct mem_node *m, void *p, bool ignore_killed)
 {
   /* P must point into the block, and the buffer must not
      have been killed unless ALL-BUFFERS is true.  */
@@ -4612,7 +4612,7 @@ live_buffer_holding (struct mem_node *m, void *p, bool all_buffers)
       char *cp = p;
       ptrdiff_t offset = cp - cb;
       if (0 <= offset && offset < sizeof *b
-         && (all_buffers || !NILP (b->name_)))
+         && !(ignore_killed && NILP (b->name_)))
        {
          Lisp_Object obj;
          XSETBUFFER (obj, b);
@@ -4622,10 +4622,12 @@ live_buffer_holding (struct mem_node *m, void *p, bool all_buffers)
   return Qnil;
 }
 
+/* If P is a pointer into a live (valid and not killed) buffer object,
+   return non-zero.  */
 static bool
 live_buffer_p (struct mem_node *m, void *p)
 {
-  return !NILP (live_buffer_holding (m, p, false));
+  return !NILP (live_buffer_holding (m, p, true));
 }
 
 /* Mark OBJ if we can prove it's a Lisp_Object.  */
@@ -4683,7 +4685,7 @@ mark_maybe_object (Lisp_Object obj)
 
        case Lisp_Vectorlike:
          mark_p = (EQ (obj, live_vector_holding (m, po))
-                   || EQ (obj, live_buffer_holding (m, po, true)));
+                   || EQ (obj, live_buffer_holding (m, po, false)));
          break;
 
        default:
@@ -4753,7 +4755,7 @@ mark_maybe_pointer (void *p)
          break;
 
        case MEM_TYPE_BUFFER:
-         obj = live_buffer_holding (m, p, true);
+         obj = live_buffer_holding (m, p, false);
          break;
 
        case MEM_TYPE_CONS: