aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/alloc.c b/src/alloc.c
index e2213db853d..6eb2e756ed1 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -5958,14 +5958,15 @@ mark_vectorlike (struct Lisp_Vector *ptr)
5958 symbols. */ 5958 symbols. */
5959 5959
5960static void 5960static void
5961mark_char_table (struct Lisp_Vector *ptr) 5961mark_char_table (struct Lisp_Vector *ptr, enum pvec_type pvectype)
5962{ 5962{
5963 int size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; 5963 int size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK;
5964 int i; 5964 /* Consult the Lisp_Sub_Char_Table layout before changing this. */
5965 int i, idx = (pvectype == PVEC_SUB_CHAR_TABLE ? SUB_CHAR_TABLE_OFFSET : 0);
5965 5966
5966 eassert (!VECTOR_MARKED_P (ptr)); 5967 eassert (!VECTOR_MARKED_P (ptr));
5967 VECTOR_MARK (ptr); 5968 VECTOR_MARK (ptr);
5968 for (i = 0; i < size; i++) 5969 for (i = idx; i < size; i++)
5969 { 5970 {
5970 Lisp_Object val = ptr->contents[i]; 5971 Lisp_Object val = ptr->contents[i];
5971 5972
@@ -5974,7 +5975,7 @@ mark_char_table (struct Lisp_Vector *ptr)
5974 if (SUB_CHAR_TABLE_P (val)) 5975 if (SUB_CHAR_TABLE_P (val))
5975 { 5976 {
5976 if (! VECTOR_MARKED_P (XVECTOR (val))) 5977 if (! VECTOR_MARKED_P (XVECTOR (val)))
5977 mark_char_table (XVECTOR (val)); 5978 mark_char_table (XVECTOR (val), PVEC_SUB_CHAR_TABLE);
5978 } 5979 }
5979 else 5980 else
5980 mark_object (val); 5981 mark_object (val);
@@ -6320,7 +6321,8 @@ mark_object (Lisp_Object arg)
6320 break; 6321 break;
6321 6322
6322 case PVEC_CHAR_TABLE: 6323 case PVEC_CHAR_TABLE:
6323 mark_char_table (ptr); 6324 case PVEC_SUB_CHAR_TABLE:
6325 mark_char_table (ptr, (enum pvec_type) pvectype);
6324 break; 6326 break;
6325 6327
6326 case PVEC_BOOL_VECTOR: 6328 case PVEC_BOOL_VECTOR:
@@ -7218,7 +7220,7 @@ The time is in seconds as a floating point value. */);
7218union 7220union
7219{ 7221{
7220 enum CHARTAB_SIZE_BITS CHARTAB_SIZE_BITS; 7222 enum CHARTAB_SIZE_BITS CHARTAB_SIZE_BITS;
7221 enum CHAR_TABLE_STANDARD_SLOTS CHAR_TABLE_STANDARD_SLOTS; 7223 enum char_table_specials char_table_specials;
7222 enum char_bits char_bits; 7224 enum char_bits char_bits;
7223 enum CHECK_LISP_OBJECT_TYPE CHECK_LISP_OBJECT_TYPE; 7225 enum CHECK_LISP_OBJECT_TYPE CHECK_LISP_OBJECT_TYPE;
7224 enum DEFAULT_HASH_SIZE DEFAULT_HASH_SIZE; 7226 enum DEFAULT_HASH_SIZE DEFAULT_HASH_SIZE;