]> git.eshelyaron.com Git - emacs.git/commitdiff
Restore process-environment after portable dumping
authorEli Zaretskii <eliz@gnu.org>
Wed, 3 Apr 2019 17:30:23 +0000 (20:30 +0300)
committerEli Zaretskii <eliz@gnu.org>
Wed, 3 Apr 2019 17:30:23 +0000 (20:30 +0300)
* src/pdumper.c (struct dump_context): New member
old_process_environment.
(Fdump_emacs_portable): Record the original value of
process-environment.
(dump_unwind_cleanup): Restore the original values of
process-environment and post-gc-hook.

src/pdumper.c

index 53a10b62b3f96bfeb344c43ae414934b6b61a9cb..7fabfa771ce4aa23819f8e8cb61c0d09401758fc 100644 (file)
@@ -495,6 +495,7 @@ struct dump_context
 
   Lisp_Object old_purify_flag;
   Lisp_Object old_post_gc_hook;
+  Lisp_Object old_process_environment;
 
 #ifdef REL_ALLOC
   bool blocked_ralloc;
@@ -3593,6 +3594,8 @@ dump_unwind_cleanup (void *data)
     r_alloc_inhibit_buffer_relocation (0);
 #endif
   Vpurify_flag = ctx->old_purify_flag;
+  Vpost_gc_hook = ctx->old_post_gc_hook;
+  Vprocess_environment = ctx->old_process_environment;
 }
 
 /* Return DUMP_OFFSET, making sure it is within the heap.  */
@@ -4024,12 +4027,6 @@ types.  */)
   Lisp_Object symbol = intern ("command-line-processed");
   specbind (symbol, Qnil);
 
-  /* Reset process-environment -- this is for when they re-dump a
-     pdump-restored emacs, since set_initial_environment wants always
-     to cons it from scratch.  */
-  Vprocess_environment = Qnil;
-  garbage_collect ();
-
   CHECK_STRING (filename);
   filename = Fexpand_file_name (filename, Qnil);
   filename = ENCODE_FILE (filename);
@@ -4091,6 +4088,12 @@ types.  */)
   ctx->old_post_gc_hook = Vpost_gc_hook;
   Vpost_gc_hook = Qnil;
 
+  /* Reset process-environment -- this is for when they re-dump a
+     pdump-restored emacs, since set_initial_environment wants always
+     to cons it from scratch.  */
+  ctx->old_process_environment = Vprocess_environment;
+  Vprocess_environment = Qnil;
+
   ctx->fd = emacs_open (SSDATA (filename),
                         O_RDWR | O_TRUNC | O_CREAT, 0666);
   if (ctx->fd < 0)