diff options
| author | Karl Heuer | 1995-01-04 22:43:47 +0000 |
|---|---|---|
| committer | Karl Heuer | 1995-01-04 22:43:47 +0000 |
| commit | 6b552283ca1bcddec62f572d48e1d25faa64d2d0 (patch) | |
| tree | 85a5eae8904bf8a0bd93aed6e3d6753a1284364e /src/alloc.c | |
| parent | 177efd15635f88108eac2d34d251ad0ca09ad79f (diff) | |
| download | emacs-6b552283ca1bcddec62f572d48e1d25faa64d2d0.tar.gz emacs-6b552283ca1bcddec62f572d48e1d25faa64d2d0.zip | |
(mark_object, mark_buffer): Don't mark buffer twice.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/alloc.c b/src/alloc.c index 4fe59ae9346..044356914e5 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1524,7 +1524,10 @@ mark_object (objptr) | |||
| 1524 | 1524 | ||
| 1525 | case Lisp_Vectorlike: | 1525 | case Lisp_Vectorlike: |
| 1526 | if (GC_BUFFERP (obj)) | 1526 | if (GC_BUFFERP (obj)) |
| 1527 | mark_buffer (obj); | 1527 | { |
| 1528 | if (!XMARKBIT (XBUFFER (obj)->name)) | ||
| 1529 | mark_buffer (obj); | ||
| 1530 | } | ||
| 1528 | else if (GC_SUBRP (obj)) | 1531 | else if (GC_SUBRP (obj)) |
| 1529 | break; | 1532 | break; |
| 1530 | else if (GC_COMPILEDP (obj)) | 1533 | else if (GC_COMPILEDP (obj)) |
| @@ -1753,7 +1756,7 @@ mark_buffer (buf) | |||
| 1753 | mark_object (ptr); | 1756 | mark_object (ptr); |
| 1754 | 1757 | ||
| 1755 | /* If this is an indirect buffer, mark its base buffer. */ | 1758 | /* If this is an indirect buffer, mark its base buffer. */ |
| 1756 | if (buffer->base_buffer) | 1759 | if (buffer->base_buffer && !XMARKBIT (buffer->base_buffer->name)) |
| 1757 | { | 1760 | { |
| 1758 | XSETBUFFER (base_buffer, buffer->base_buffer); | 1761 | XSETBUFFER (base_buffer, buffer->base_buffer); |
| 1759 | mark_buffer (base_buffer); | 1762 | mark_buffer (base_buffer); |