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 }