Mercurial > emacs
comparison src/alloc.c @ 10340:ef58c7a5a4d6
(mark_object, mark_buffer): Don't mark buffer twice.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Wed, 04 Jan 1995 22:43:47 +0000 |
parents | a6e67b5ee8b0 |
children | 162b3e6c4610 |
comparison
equal
deleted
inserted
replaced
10339:a54c5191fb97 | 10340:ef58c7a5a4d6 |
---|---|
1522 } | 1522 } |
1523 break; | 1523 break; |
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)) |
1531 /* We could treat this just like a vector, but it is better | 1534 /* We could treat this just like a vector, but it is better |
1532 to save the COMPILED_CONSTANTS element for last and avoid recursion | 1535 to save the COMPILED_CONSTANTS element for last and avoid recursion |
1751 (char *)ptr < (char *)buffer + sizeof (struct buffer); | 1754 (char *)ptr < (char *)buffer + sizeof (struct buffer); |
1752 ptr++) | 1755 ptr++) |
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); |
1760 } | 1763 } |
1761 } | 1764 } |