From: Andrea Corallo Date: Mon, 8 Jun 2020 15:21:03 +0000 (+0200) Subject: * Fix load logic for the reloading CU case (bug#41754) X-Git-Tag: emacs-28.0.90~2727^2~577 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4784bcc96b32f2fc796c7067d2a6c8ddf00f4242;p=emacs.git * Fix load logic for the reloading CU case (bug#41754) * src/comp.c (load_comp_unit): When swapping the compilation unit abandoning the new one for the original do not forget to set its loaded_once field to true because is in use by `comp--register-lambda'. (Fcomp__register_lambda): Add sanity a check to spot early if we are trying to load the same lambda twice. --- diff --git a/src/comp.c b/src/comp.c index b2dbfe88b3b..960badb6467 100644 --- a/src/comp.c +++ b/src/comp.c @@ -4439,6 +4439,7 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, { comp_u_lisp_obj = *saved_cu; comp_u = XNATIVE_COMP_UNIT (comp_u_lisp_obj); + comp_u->loaded_once = true; } else *saved_cu = comp_u_lisp_obj; @@ -4603,6 +4604,7 @@ DEFUN ("comp--register-lambda", Fcomp__register_lambda, Scomp__register_lambda, Fputhash (tem, Qt, cu->lambda_gc_guard); /* This is for fixing up the value in d_reloc while resurrecting from dump. See 'dump_do_dump_relocation'. */ + eassert (NILP (Fgethash (c_name, cu->lambda_c_name_idx_h, Qnil))); Fputhash (c_name, reloc_idx, cu->lambda_c_name_idx_h); /* The key is not really important as long is the same as symbol_name so use c_name. */