]> git.eshelyaron.com Git - emacs.git/commitdiff
* Fix load logic for the reloading CU case (bug#41754)
authorAndrea Corallo <andcor03@e112547.nice.arm.com>
Mon, 8 Jun 2020 15:21:03 +0000 (17:21 +0200)
committerAndrea Corallo <akrl@sdf.org>
Mon, 8 Jun 2020 20:51:24 +0000 (21:51 +0100)
* 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.

src/comp.c

index b2dbfe88b3ba0e71c624bfa00efd9d9fd7d66884..960badb6467e1baf0e416b3e02ebbc082c925dc4 100644 (file)
@@ -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.  */