]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix 'define-charset' after dumping with pdumper
authorEli Zaretskii <eliz@gnu.org>
Sun, 17 Mar 2019 15:49:37 +0000 (17:49 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sun, 17 Mar 2019 15:49:37 +0000 (17:49 +0200)
* src/charset.h:
* src/charset.c (charset_table_used): Now static.
(charset_table_size): Now extern.
* src/pdumper.c (dump_charset_table): Dump the entire
charset_table, not just its used slots.  (Bug#34826)

src/charset.c
src/charset.h
src/pdumper.c

index 56ab8d701812a0b0e95a08ade2451687c989e1c0..c0700f972eeb5de2c6b77b891c4ebc6edc406088 100644 (file)
@@ -62,8 +62,8 @@ Lisp_Object Vcharset_hash_table;
 
 /* Table of struct charset.  */
 struct charset *charset_table;
-static int charset_table_size;
-int charset_table_used;
+int charset_table_size;
+static int charset_table_used;
 
 /* Special charsets corresponding to symbols.  */
 int charset_ascii;
index ee697b8d3eff950c039899d67a6768a1f8747cd9..7042a71a46979eceeb81e88e45390b096bef5b7e 100644 (file)
@@ -248,7 +248,7 @@ extern Lisp_Object Vcharset_hash_table;
 
 /* Table of struct charset.  */
 extern struct charset *charset_table;
-extern int charset_table_used;
+extern int charset_table_size;
 
 #define CHARSET_FROM_ID(id) (charset_table + (id))
 
index 56ac531363d50893b2926509bcd20c2083f9e55f..92e19497e59f5b52a31c0d43192c073afd717747 100644 (file)
@@ -3212,7 +3212,11 @@ dump_charset_table (struct dump_context *ctx)
   ctx->flags.pack_objects = true;
   dump_align_output (ctx, DUMP_ALIGNMENT);
   dump_off offset = ctx->offset;
-  for (int i = 0; i < charset_table_used; ++i)
+  /* We are dumping the entire table, not just the used slots, because
+     otherwise when we restore from the pdump file, the actual size of
+     the table will be smaller than charset_table_size, and we will
+     crash if/when a new charset is defined.  */
+  for (int i = 0; i < charset_table_size; ++i)
     dump_charset (ctx, i);
   dump_emacs_reloc_to_dump_ptr_raw (ctx, &charset_table, offset);
   ctx->flags = old_flags;