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;
}
xfree(cmdline);
cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL);
if (typeahead_saved) {
@@ -294,7 +295,6 @@ void do_debug(char_u *cmd)
break;
case CMD_BACKTRACE:
do_showbacktrace(cmd);
xfree(cmdline); // free cmdline before next loop iteration
continue;
case CMD_FRAME:
if (*p == NUL) {
@@ -303,17 +303,14 @@ void do_debug(char_u *cmd)
p = skipwhite(p);
do_setdebugtracelevel(p);
}
xfree(cmdline);
continue;
case CMD_UP:
debug_backtrace_level++;
do_checkbacktracelevel();
xfree(cmdline);
continue;
case CMD_DOWN:
debug_backtrace_level--;
do_checkbacktracelevel();
xfree(cmdline);
continue;
}
// Going out reset backtrace_level
@@ -327,8 +324,6 @@ void do_debug(char_u *cmd)
(void)do_cmdline(cmdline, getexline, NULL,
DOCMD_VERBOSE|DOCMD_EXCRESET);
debug_break_level = n;
xfree(cmdline);
}
lines_left = (int)(Rows - 1);
}