summaryrefslogtreecommitdiff
path: root/src/alloc.c
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1994-11-18 06:49:09 +0000
committerKarl Heuer <kwzh@gnu.org>1994-11-18 06:49:09 +0000
commit76437631034878f5a3ee9bd0bf58c8367708af4c (patch)
tree1d3e76dd72b71881a4bebf642e59740703cd2a7b /src/alloc.c
parente958fd9aca5fcf723f3552b109467c07a7f02649 (diff)
downloademacs-76437631034878f5a3ee9bd0bf58c8367708af4c.tar.gz
(Fpurecopy): Use type test macros.
(mark_object): Use the new pseudovector convention.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 02587c6d906..293fc8bc914 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1522,10 +1522,9 @@ mark_object (objptr)
}
break;
- case Lisp_Vector:
+ case Lisp_Vectorlike:
case Lisp_Window:
case Lisp_Process:
- case Lisp_Window_Configuration:
{
register struct Lisp_Vector *ptr = XVECTOR (obj);
register EMACS_INT size = ptr->size;
@@ -1538,9 +1537,11 @@ mark_object (objptr)
struct Lisp_Vector *volatile ptr1 = ptr;
register int i;
- if (size & ARRAY_MARK_FLAG) break; /* Already marked */
+ if (size & ARRAY_MARK_FLAG) break; /* Already marked */
ptr->size |= ARRAY_MARK_FLAG; /* Else mark it */
- for (i = 0; i < size; i++) /* and then mark its elements */
+ if (size & PSEUDOVECTOR_FLAG)
+ size &= PSEUDOVECTOR_SIZE_MASK;
+ for (i = 0; i < size; i++) /* and then mark its elements */
mark_object (&ptr1->contents[i]);
}
break;