Mercurial > emacs
comparison src/alloc.c @ 51843:65772ad7d4e1
(mark_object): Mark the new `next' field of overlays.
(mark_buffer): Manually mark the overlays_(after|before) fields.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Wed, 09 Jul 2003 14:53:41 +0000 |
| parents | 43d663a05e2d |
| children | 4073a8ee4fc0 |
comparison
equal
deleted
inserted
replaced
| 51842:efecd49d7338 | 51843:65772ad7d4e1 |
|---|---|
| 5005 case Lisp_Misc_Overlay: | 5005 case Lisp_Misc_Overlay: |
| 5006 { | 5006 { |
| 5007 struct Lisp_Overlay *ptr = XOVERLAY (obj); | 5007 struct Lisp_Overlay *ptr = XOVERLAY (obj); |
| 5008 mark_object (ptr->start); | 5008 mark_object (ptr->start); |
| 5009 mark_object (ptr->end); | 5009 mark_object (ptr->end); |
| 5010 obj = ptr->plist; | 5010 mark_object (ptr->plist); |
| 5011 goto loop; | 5011 if (ptr->next) |
| 5012 { | |
| 5013 XSETMISC (obj, ptr->next); | |
| 5014 goto loop; | |
| 5015 } | |
| 5012 } | 5016 } |
| 5013 break; | 5017 break; |
| 5014 | 5018 |
| 5015 default: | 5019 default: |
| 5016 abort (); | 5020 abort (); |
| 5060 static void | 5064 static void |
| 5061 mark_buffer (buf) | 5065 mark_buffer (buf) |
| 5062 Lisp_Object buf; | 5066 Lisp_Object buf; |
| 5063 { | 5067 { |
| 5064 register struct buffer *buffer = XBUFFER (buf); | 5068 register struct buffer *buffer = XBUFFER (buf); |
| 5065 register Lisp_Object *ptr; | 5069 register Lisp_Object *ptr, tmp; |
| 5066 Lisp_Object base_buffer; | 5070 Lisp_Object base_buffer; |
| 5067 | 5071 |
| 5068 VECTOR_MARK (buffer); | 5072 VECTOR_MARK (buffer); |
| 5069 | 5073 |
| 5070 MARK_INTERVAL_TREE (BUF_INTERVALS (buffer)); | 5074 MARK_INTERVAL_TREE (BUF_INTERVALS (buffer)); |
| 5102 | 5106 |
| 5103 mark_object (XCDR (tail)); | 5107 mark_object (XCDR (tail)); |
| 5104 } | 5108 } |
| 5105 else | 5109 else |
| 5106 mark_object (buffer->undo_list); | 5110 mark_object (buffer->undo_list); |
| 5111 | |
| 5112 if (buffer->overlays_before) | |
| 5113 { | |
| 5114 XSETMISC (tmp, buffer->overlays_before); | |
| 5115 mark_object (tmp); | |
| 5116 } | |
| 5117 if (buffer->overlays_after) | |
| 5118 { | |
| 5119 XSETMISC (tmp, buffer->overlays_after); | |
| 5120 mark_object (tmp); | |
| 5121 } | |
| 5107 | 5122 |
| 5108 for (ptr = &buffer->name; | 5123 for (ptr = &buffer->name; |
| 5109 (char *)ptr < (char *)buffer + sizeof (struct buffer); | 5124 (char *)ptr < (char *)buffer + sizeof (struct buffer); |
| 5110 ptr++) | 5125 ptr++) |
| 5111 mark_object (*ptr); | 5126 mark_object (*ptr); |
