diff options
author | Karl Heuer <kwzh@gnu.org> | 1994-11-18 06:49:09 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1994-11-18 06:49:09 +0000 |
commit | 76437631034878f5a3ee9bd0bf58c8367708af4c (patch) | |
tree | 1d3e76dd72b71881a4bebf642e59740703cd2a7b /src/alloc.c | |
parent | e958fd9aca5fcf723f3552b109467c07a7f02649 (diff) | |
download | emacs-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.c | 9 |
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; |