From 3e98c68e76fe07280e82cd394008fdcbe1ce59fa Mon Sep 17 00:00:00 2001 From: Dmitry Antipov <dmantipov@yandex.ru> Date: Wed, 10 Oct 2012 18:45:07 +0400 Subject: [PATCH] * alloc.c (gc_sweep): Use pointer-to-a-pointer loop for buffers. --- src/ChangeLog | 4 ++++ src/alloc.c | 13 ++++--------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index dedf10b8e2d..71465cc9b86 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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. diff --git a/src/alloc.c b/src/alloc.c index 3ed8cc2d990..0cbdef84c4a 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -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; } } -- 2.39.5