mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
fix(ui): don't log from UI events during free_all_mem()
Example assertion failure: %0 in logmsg neovim/src/nvim/log.c:139:17 %1 in ui_call_update_menu neovim/build/src/nvim/auto/ui_events_call.generated.h:8:3 %2 in ex_menu neovim/src/nvim/menu.c:263:3 %3 in do_one_cmd neovim/src/nvim/ex_docmd.c:1981:5 %4 in do_cmdline neovim/src/nvim/ex_docmd.c:602:20 %5 in do_cmdline_cmd neovim/src/nvim/ex_docmd.c:287:10 %6 in free_all_mem neovim/src/nvim/memory.c:596:3 %7 in os_exit neovim/src/nvim/main.c:574:3 %8 in exit_event neovim/src/nvim/msgpack_rpc/channel.c:569:5
This commit is contained in:
@@ -69,9 +69,16 @@ static int pending_has_mouse = -1;
|
|||||||
#else
|
#else
|
||||||
static size_t uilog_seen = 0;
|
static size_t uilog_seen = 0;
|
||||||
static char uilog_last_event[1024] = { 0 };
|
static char uilog_last_event[1024] = { 0 };
|
||||||
|
|
||||||
|
#ifndef EXITFREE
|
||||||
|
#define entered_free_all_mem false
|
||||||
|
#endif
|
||||||
|
|
||||||
# define UI_LOG(funname) \
|
# define UI_LOG(funname) \
|
||||||
do { \
|
do { \
|
||||||
if (strequal(uilog_last_event, STR(funname))) { \
|
if (entered_free_all_mem) { \
|
||||||
|
/* do nothing, we cannot log now */ \
|
||||||
|
} else if (strequal(uilog_last_event, STR(funname))) { \
|
||||||
uilog_seen++; \
|
uilog_seen++; \
|
||||||
} else { \
|
} else { \
|
||||||
if (uilog_seen > 0) { \
|
if (uilog_seen > 0) { \
|
||||||
@@ -107,6 +114,10 @@ static char uilog_last_event[1024] = { 0 };
|
|||||||
# include "ui_events_call.generated.h"
|
# include "ui_events_call.generated.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef EXITFREE
|
||||||
|
#undef entered_free_all_mem
|
||||||
|
#endif
|
||||||
|
|
||||||
void ui_init(void)
|
void ui_init(void)
|
||||||
{
|
{
|
||||||
default_grid.handle = 1;
|
default_grid.handle = 1;
|
||||||
|
Reference in New Issue
Block a user