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:
Jurica Bradaric
2016-05-17 20:56:05 +02:00
parent 12cfe7775f
commit 91796f70ed
2 changed files with 2 additions and 6 deletions

View File

@@ -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);
} }

View File

@@ -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,