]> git.eshelyaron.com Git - emacs.git/commitdiff
; * src/alloc.c (purecopy_hash_table): Simplify
authorMattias Engdegård <mattiase@acm.org>
Tue, 28 Nov 2023 12:54:26 +0000 (13:54 +0100)
committerMattias Engdegård <mattiase@acm.org>
Fri, 12 Jan 2024 17:02:15 +0000 (18:02 +0100)
Copy the entire struct, then take care of fields needing special
treatment.

src/alloc.c

index fae76d24189ab9d8e0ec34d780b95f3e1c64c23b..af9c169a3a014966cc3af3fc342899947c803f57 100644 (file)
@@ -5891,26 +5891,16 @@ purecopy_hash_table (struct Lisp_Hash_Table *table)
   eassert (table->purecopy);
 
   struct Lisp_Hash_Table *pure = pure_alloc (sizeof *pure, Lisp_Vectorlike);
-  struct hash_table_test pure_test = table->test;
+  *pure = *table;
+  pure->mutable = false;
 
-  /* Purecopy the hash table test.  */
-  pure_test.name = purecopy (table->test.name);
-  pure_test.user_hash_function = purecopy (table->test.user_hash_function);
-  pure_test.user_cmp_function = purecopy (table->test.user_cmp_function);
-
-  pure->header = table->header;
-  pure->weak = purecopy (Qnil);
+  pure->test.name = purecopy (table->test.name);
+  pure->test.user_hash_function = purecopy (table->test.user_hash_function);
+  pure->test.user_cmp_function = purecopy (table->test.user_cmp_function);
   pure->hash = purecopy (table->hash);
   pure->next = purecopy (table->next);
   pure->index = purecopy (table->index);
-  pure->count = table->count;
-  pure->next_free = table->next_free;
-  pure->purecopy = table->purecopy;
-  eassert (!pure->mutable);
-  pure->rehash_threshold = table->rehash_threshold;
-  pure->rehash_size = table->rehash_size;
   pure->key_and_value = purecopy (table->key_and_value);
-  pure->test = pure_test;
 
   return pure;
 }