mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-23 13:27:36 +00:00
(malloc_get_state, malloc_set_state): New declarations.
(main): Restore internal malloc state when loading from dumped image. (Fdump_emacs): Copy internal malloc state for dumping, then free it.
This commit is contained in:
parent
d165822189
commit
15aaf1b5d2
1 changed files with 24 additions and 0 deletions
24
src/emacs.c
24
src/emacs.c
|
|
@ -81,6 +81,16 @@ Lisp_Object Vkill_emacs_hook;
|
|||
on subsequent starts. */
|
||||
int initialized;
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
/* Preserves a pointer to the memory allocated that copies that
|
||||
static data inside glibc's malloc. */
|
||||
void *malloc_state_ptr;
|
||||
/* From glibc, a routine that returns a copy of the malloc internal state. */
|
||||
extern void *malloc_get_state ();
|
||||
/* From glibc, a routine that overwrites the malloc internal state. */
|
||||
extern void malloc_set_state ();
|
||||
#endif
|
||||
|
||||
/* Variable whose value is symbol giving operating system type. */
|
||||
Lisp_Object Vsystem_type;
|
||||
|
||||
|
|
@ -486,6 +496,14 @@ main (argc, argv, envp)
|
|||
__sbrk (1);
|
||||
#endif
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
if (initialized)
|
||||
{
|
||||
malloc_set_state (malloc_state_ptr);
|
||||
free (malloc_state_ptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
sort_args (argc, argv);
|
||||
|
||||
if (argmatch (argv, argc, "-version", "--version", 3, NULL, &skip_args))
|
||||
|
|
@ -1509,9 +1527,15 @@ and announce itself normally when it is run.")
|
|||
Meanwhile, my_edata is not valid on Windows. */
|
||||
memory_warnings (my_edata, malloc_warning);
|
||||
#endif /* not WINDOWSNT */
|
||||
#endif
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
malloc_state_ptr = malloc_get_state ();
|
||||
#endif
|
||||
unexec (XSTRING (filename)->data,
|
||||
!NILP (symfile) ? XSTRING (symfile)->data : 0, my_edata, 0, 0);
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
free (malloc_state_ptr);
|
||||
#endif
|
||||
#endif /* not VMS */
|
||||
|
||||
Vpurify_flag = tem;
|
||||
|
|
|
|||
Loading…
Reference in a new issue