2670 |
p->buffer = 0; |
p->buffer = 0; |
2671 |
p->bytepos = 0; |
p->bytepos = 0; |
2672 |
p->charpos = 0; |
p->charpos = 0; |
2673 |
p->chain = Qnil; |
p->next = NULL; |
2674 |
p->insertion_type = 0; |
p->insertion_type = 0; |
2675 |
return val; |
return val; |
2676 |
} |
} |
2681 |
free_marker (marker) |
free_marker (marker) |
2682 |
Lisp_Object marker; |
Lisp_Object marker; |
2683 |
{ |
{ |
2684 |
unchain_marker (marker); |
unchain_marker (XMARKER (marker)); |
2685 |
|
|
2686 |
XMISC (marker)->u_marker.type = Lisp_Misc_Free; |
XMISC (marker)->u_marker.type = Lisp_Misc_Free; |
2687 |
XMISC (marker)->u_free.chain = marker_free_list; |
XMISC (marker)->u_free.chain = marker_free_list; |
4930 |
break; |
break; |
4931 |
|
|
4932 |
case Lisp_Misc: |
case Lisp_Misc: |
4933 |
/* FIXME: Maybe we should just use obj->mark for all? */ |
survives_p = XMARKER (obj)->gcmarkbit; |
|
switch (XMISCTYPE (obj)) |
|
|
{ |
|
|
case Lisp_Misc_Marker: |
|
|
survives_p = XMARKER (obj)->gcmarkbit; |
|
|
break; |
|
|
|
|
|
case Lisp_Misc_Buffer_Local_Value: |
|
|
case Lisp_Misc_Some_Buffer_Local_Value: |
|
|
survives_p = XBUFFER_LOCAL_VALUE (obj)->gcmarkbit; |
|
|
break; |
|
|
|
|
|
case Lisp_Misc_Intfwd: |
|
|
case Lisp_Misc_Boolfwd: |
|
|
case Lisp_Misc_Objfwd: |
|
|
case Lisp_Misc_Buffer_Objfwd: |
|
|
case Lisp_Misc_Kboard_Objfwd: |
|
|
survives_p = 1; |
|
|
break; |
|
|
|
|
|
case Lisp_Misc_Overlay: |
|
|
survives_p = XOVERLAY (obj)->gcmarkbit; |
|
|
break; |
|
|
|
|
|
default: |
|
|
abort (); |
|
|
} |
|
4934 |
break; |
break; |
4935 |
|
|
4936 |
case Lisp_String: |
case Lisp_String: |
5214 |
{ |
{ |
5215 |
Lisp_Object tem; |
Lisp_Object tem; |
5216 |
if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker) |
if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker) |
5217 |
{ |
unchain_marker (&mblk->markers[i].u_marker); |
|
/* tem1 avoids Sun compiler bug */ |
|
|
struct Lisp_Marker *tem1 = &mblk->markers[i].u_marker; |
|
|
XSETMARKER (tem, tem1); |
|
|
unchain_marker (tem); |
|
|
} |
|
5218 |
/* Set the type of the freed object to Lisp_Misc_Free. |
/* Set the type of the freed object to Lisp_Misc_Free. |
5219 |
We could leave the type alone, since nobody checks it, |
We could leave the type alone, since nobody checks it, |
5220 |
but this might catch bugs faster. */ |
but this might catch bugs faster. */ |