]> git.eshelyaron.com Git - emacs.git/commitdiff
* alloc.c (gc_sweep): Use pointer-to-a-pointer loop for buffers.
authorDmitry Antipov <dmantipov@yandex.ru>
Wed, 10 Oct 2012 14:45:07 +0000 (18:45 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Wed, 10 Oct 2012 14:45:07 +0000 (18:45 +0400)
src/ChangeLog
src/alloc.c

index dedf10b8e2dbc8b8f6cf70b41a45adacd6dc6fac..71465cc9b86d11bef53bc153b7ab2eda8ad51c91 100644 (file)
@@ -1,3 +1,7 @@
+2012-10-10  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * alloc.c (gc_sweep): Use pointer-to-a-pointer loop for buffers.
+
 2012-10-10  Paul Eggert  <eggert@cs.ucla.edu>
 
        * commands.h (immediate_quit): Remove duplicate decl.
index 3ed8cc2d990a44043587f85747735f41657b5254..0cbdef84c4a1d7bde89d4c44837ae80dc65f1412 100644 (file)
@@ -6311,19 +6311,14 @@ gc_sweep (void)
 
   /* Free all unmarked buffers */
   {
-    register struct buffer *buffer = all_buffers, *prev = 0, *next;
+    register struct buffer *buffer, **bprev = &all_buffers;
 
     total_buffers = 0;
-    while (buffer)
+    for (buffer = all_buffers; buffer; buffer = *bprev)
       if (!VECTOR_MARKED_P (buffer))
        {
-         if (prev)
-           prev->header.next = buffer->header.next;
-         else
-           all_buffers = buffer->header.next.buffer;
-         next = buffer->header.next.buffer;
+         *bprev = buffer->header.next.buffer;
          lisp_free (buffer);
-         buffer = next;
        }
       else
        {
@@ -6331,7 +6326,7 @@ gc_sweep (void)
          /* Do not use buffer_(set|get)_intervals here.  */
          buffer->text->intervals = balance_intervals (buffer->text->intervals);
          total_buffers++;
-         prev = buffer, buffer = buffer->header.next.buffer;
+         bprev = &buffer->header.next.buffer;
        }
   }