mirror of
https://github.com/neovim/neovim.git
synced 2025-09-29 14:38:32 +00:00
vim-patch:7.4.1832
Problem: Memory leak in debug commands.
Solution: Free memory before overwriting the pointer. (hint by Justin Keyes)
dc303bce10
This commit is contained in:
@@ -189,6 +189,7 @@ void do_debug(char_u *cmd)
|
|||||||
ignore_script = TRUE;
|
ignore_script = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xfree(cmdline);
|
||||||
cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL);
|
cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL);
|
||||||
|
|
||||||
if (typeahead_saved) {
|
if (typeahead_saved) {
|
||||||
@@ -294,7 +295,6 @@ void do_debug(char_u *cmd)
|
|||||||
break;
|
break;
|
||||||
case CMD_BACKTRACE:
|
case CMD_BACKTRACE:
|
||||||
do_showbacktrace(cmd);
|
do_showbacktrace(cmd);
|
||||||
xfree(cmdline); // free cmdline before next loop iteration
|
|
||||||
continue;
|
continue;
|
||||||
case CMD_FRAME:
|
case CMD_FRAME:
|
||||||
if (*p == NUL) {
|
if (*p == NUL) {
|
||||||
@@ -303,17 +303,14 @@ void do_debug(char_u *cmd)
|
|||||||
p = skipwhite(p);
|
p = skipwhite(p);
|
||||||
do_setdebugtracelevel(p);
|
do_setdebugtracelevel(p);
|
||||||
}
|
}
|
||||||
xfree(cmdline);
|
|
||||||
continue;
|
continue;
|
||||||
case CMD_UP:
|
case CMD_UP:
|
||||||
debug_backtrace_level++;
|
debug_backtrace_level++;
|
||||||
do_checkbacktracelevel();
|
do_checkbacktracelevel();
|
||||||
xfree(cmdline);
|
|
||||||
continue;
|
continue;
|
||||||
case CMD_DOWN:
|
case CMD_DOWN:
|
||||||
debug_backtrace_level--;
|
debug_backtrace_level--;
|
||||||
do_checkbacktracelevel();
|
do_checkbacktracelevel();
|
||||||
xfree(cmdline);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Going out reset backtrace_level
|
// Going out reset backtrace_level
|
||||||
@@ -327,8 +324,6 @@ void do_debug(char_u *cmd)
|
|||||||
(void)do_cmdline(cmdline, getexline, NULL,
|
(void)do_cmdline(cmdline, getexline, NULL,
|
||||||
DOCMD_VERBOSE|DOCMD_EXCRESET);
|
DOCMD_VERBOSE|DOCMD_EXCRESET);
|
||||||
debug_break_level = n;
|
debug_break_level = n;
|
||||||
|
|
||||||
xfree(cmdline);
|
|
||||||
}
|
}
|
||||||
lines_left = (int)(Rows - 1);
|
lines_left = (int)(Rows - 1);
|
||||||
}
|
}
|
||||||
|
@@ -69,6 +69,7 @@ static char *features[] = {
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static int included_patches[] = {
|
static int included_patches[] = {
|
||||||
|
1832,
|
||||||
1809,
|
1809,
|
||||||
1808,
|
1808,
|
||||||
1806,
|
1806,
|
||||||
|
Reference in New Issue
Block a user