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);