summaryrefslogtreecommitdiff
path: root/src/alloc.c
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1995-01-04 22:43:47 +0000
committerKarl Heuer <kwzh@gnu.org>1995-01-04 22:43:47 +0000
commitb2c009cd00859d07a6dedd73c1cf7d990eaf3765 (patch)
treedb0b2e8a648271412e396a0c8672df507440ed59 /src/alloc.c
parentbf39ca65ea90863495dab39f6648b7c2aa951ec0 (diff)
downloademacs-b2c009cd00859d07a6dedd73c1cf7d990eaf3765.tar.gz
(mark_object, mark_buffer): Don't mark buffer twice.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c7
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)
case Lisp_Vectorlike:
if (GC_BUFFERP (obj))
- mark_buffer (obj);
+ {
+ if (!XMARKBIT (XBUFFER (obj)->name))
+ mark_buffer (obj);
+ }
else if (GC_SUBRP (obj))
break;
else if (GC_COMPILEDP (obj))
@@ -1753,7 +1756,7 @@ mark_buffer (buf)
mark_object (ptr);
/* If this is an indirect buffer, mark its base buffer. */
- if (buffer->base_buffer)
+ if (buffer->base_buffer && !XMARKBIT (buffer->base_buffer->name))
{
XSETBUFFER (base_buffer, buffer->base_buffer);
mark_buffer (base_buffer);