summaryrefslogtreecommitdiff
path: root/src/alloc.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1998-03-12 05:49:15 +0000
committerRichard M. Stallman <rms@gnu.org>1998-03-12 05:49:15 +0000
commit5ef02e147c1685c6af189ab019a0d4548c5a89da (patch)
treebc834a3de2ece4ec6047bd57c86428b777020536 /src/alloc.c
parentb1151ef119add1ebcaac86f0b378660b2c4ead61 (diff)
downloademacs-5ef02e147c1685c6af189ab019a0d4548c5a89da.tar.gz
(gc_sweep, mark_object): Handle new data structure
for struct Lisp_Buffer_Local_Value.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 5ae44416943..337a7f0ede5 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2091,15 +2091,17 @@ mark_object (argptr)
{
register struct Lisp_Buffer_Local_Value *ptr
= XBUFFER_LOCAL_VALUE (obj);
- if (XMARKBIT (ptr->car)) break;
- XMARK (ptr->car);
+ if (XMARKBIT (ptr->realvalue)) break;
+ XMARK (ptr->realvalue);
/* If the cdr is nil, avoid recursion for the car. */
if (EQ (ptr->cdr, Qnil))
{
- objptr = &ptr->car;
+ objptr = &ptr->realvalue;
goto loop;
}
- mark_object (&ptr->car);
+ mark_object (&ptr->realvalue);
+ mark_object (&ptr->buffer);
+ mark_object (&ptr->frame);
/* See comment above under Lisp_Vector for why not use ptr here. */
objptr = &XBUFFER_LOCAL_VALUE (obj)->cdr;
goto loop;
@@ -2433,9 +2435,8 @@ gc_sweep ()
}
#ifndef standalone
- /* Put all unmarked markers on free list.
- Unchain each one first from the buffer it points into,
- but only if it's a real marker. */
+ /* Put all unmarked misc's on free list.
+ For a marker, first unchain it from the buffer it points into. */
{
register struct marker_block *mblk;
struct marker_block **mprev = &marker_block;
@@ -2460,7 +2461,7 @@ gc_sweep ()
break;
case Lisp_Misc_Buffer_Local_Value:
case Lisp_Misc_Some_Buffer_Local_Value:
- markword = &mblk->markers[i].u_buffer_local_value.car;
+ markword = &mblk->markers[i].u_buffer_local_value.realvalue;
break;
case Lisp_Misc_Overlay:
markword = &mblk->markers[i].u_overlay.plist;