mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 7.4.1868
Problem: Setting really_exiting causes memory leaks to be reported. Solution: Add the in_free_all_mem flag.
This commit is contained in:
parent
3c809343c7
commit
b89a25f17e
@ -25350,8 +25350,9 @@ func_unref(char_u *name)
|
||||
fp = find_func(name);
|
||||
if (fp == NULL)
|
||||
{
|
||||
/* Ignore when invoked through free_all_mem(). */
|
||||
if (!really_exiting)
|
||||
#ifdef EXITFREE
|
||||
if (!entered_free_all_mem)
|
||||
#endif
|
||||
EMSG2(_(e_intern2), "func_unref()");
|
||||
}
|
||||
else if (--fp->uf_refcount <= 0)
|
||||
|
@ -635,6 +635,10 @@ EXTERN int exiting INIT(= FALSE);
|
||||
EXTERN int really_exiting INIT(= FALSE);
|
||||
/* TRUE when we are sure to exit, e.g., after
|
||||
* a deadly signal */
|
||||
#if defined(EXITFREE)
|
||||
EXTERN int entered_free_all_mem INIT(= FALSE);
|
||||
/* TRUE when in or after free_all_mem() */
|
||||
#endif
|
||||
/* volatile because it is used in signal handler deathtrap(). */
|
||||
EXTERN volatile int full_screen INIT(= FALSE);
|
||||
/* TRUE when doing full-screen output
|
||||
|
@ -1036,16 +1036,12 @@ static void free_findfile(void);
|
||||
free_all_mem(void)
|
||||
{
|
||||
buf_T *buf, *nextbuf;
|
||||
static int entered = FALSE;
|
||||
|
||||
/* When we cause a crash here it is caught and Vim tries to exit cleanly.
|
||||
* Don't try freeing everything again. */
|
||||
if (entered)
|
||||
if (entered_free_all_mem)
|
||||
return;
|
||||
entered = TRUE;
|
||||
|
||||
/* Set this flag to indicate some errors can be ignored. */
|
||||
really_exiting = TRUE;
|
||||
entered_free_all_mem = TRUE;
|
||||
|
||||
# ifdef FEAT_AUTOCMD
|
||||
/* Don't want to trigger autocommands from here on. */
|
||||
|
@ -753,6 +753,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1868,
|
||||
/**/
|
||||
1867,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user