1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-26 15:10:50 -08:00

(mark_object): Ignore Lisp_Misc_Free objects.

Such objects may be freed markers which still exist on an undo list.
This commit is contained in:
Kim F. Storm 2004-05-17 12:08:02 +00:00
parent 54b53ba7a3
commit d2db1c32fa

View file

@ -844,7 +844,7 @@ lisp_align_free (block)
free_ablock = ablock;
/* Update busy count. */
ABLOCKS_BUSY (abase) = (struct ablocks *) (-2 + (long) ABLOCKS_BUSY (abase));
if (2 > (long) ABLOCKS_BUSY (abase))
{ /* All the blocks are free. */
int i = 0, aligned = (long) ABLOCKS_BUSY (abase);
@ -4976,6 +4976,15 @@ mark_object (arg)
break;
case Lisp_Misc:
if (XMISCTYPE (obj) == Lisp_Misc_Free)
{
/* This is (probably) a freed marker which may still exist on
a buffer undo list, so accept it here. */
/* If we reuse the marker, and it still exists on the undo
list, and we do undo, behaviour is unpredictable --
but at least we don't crash here. KFS 2004-05-17 */
break;
}
CHECK_ALLOCATED_AND_LIVE (live_misc_p);
if (XMARKER (obj)->gcmarkbit)
break;