844 |
free_ablock = ablock; |
free_ablock = ablock; |
845 |
/* Update busy count. */ |
/* Update busy count. */ |
846 |
ABLOCKS_BUSY (abase) = (struct ablocks *) (-2 + (long) ABLOCKS_BUSY (abase)); |
ABLOCKS_BUSY (abase) = (struct ablocks *) (-2 + (long) ABLOCKS_BUSY (abase)); |
847 |
|
|
848 |
if (2 > (long) ABLOCKS_BUSY (abase)) |
if (2 > (long) ABLOCKS_BUSY (abase)) |
849 |
{ /* All the blocks are free. */ |
{ /* All the blocks are free. */ |
850 |
int i = 0, aligned = (long) ABLOCKS_BUSY (abase); |
int i = 0, aligned = (long) ABLOCKS_BUSY (abase); |
4977 |
break; |
break; |
4978 |
|
|
4979 |
case Lisp_Misc: |
case Lisp_Misc: |
4980 |
|
if (XMISCTYPE (obj) == Lisp_Misc_Free) |
4981 |
|
{ |
4982 |
|
/* This is (probably) a freed marker which may still exist on |
4983 |
|
a buffer undo list, so accept it here, as check below will |
4984 |
|
fail (not live). KFS 2004-05-17 */ |
4985 |
|
XMARKER (obj)->gcmarkbit = 1; |
4986 |
|
break; |
4987 |
|
} |
4988 |
CHECK_ALLOCATED_AND_LIVE (live_misc_p); |
CHECK_ALLOCATED_AND_LIVE (live_misc_p); |
4989 |
if (XMARKER (obj)->gcmarkbit) |
if (XMARKER (obj)->gcmarkbit) |
4990 |
break; |
break; |