Commit 03a9a75c authored by Eli Zaretskii's avatar Eli Zaretskii

Fix 'define-charset' after dumping with pdumper

* 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)
parent 3320fe2d
Pipeline #1009 failed with stage
in 50 minutes and 22 seconds
......@@ -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;
......
......@@ -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))
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment