0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.2.5148: invalid memory access when using expression on command line

Problem:    Invalid memory access when using an expression on the command line.
Solution:   Make sure the position does not go negative.
This commit is contained in:
Bram Moolenaar
2022-06-22 13:51:54 +01:00
parent 12a49408b3
commit 6046aded8d
3 changed files with 10 additions and 2 deletions

View File

@@ -1206,6 +1206,7 @@ cmdline_insert_reg(int *gotesc UNUSED)
{ {
int i; int i;
int c; int c;
int save_new_cmdpos = new_cmdpos;
#ifdef USE_ON_FLY_SCROLL #ifdef USE_ON_FLY_SCROLL
dont_scroll = TRUE; // disallow scrolling here dont_scroll = TRUE; // disallow scrolling here
@@ -1224,8 +1225,6 @@ cmdline_insert_reg(int *gotesc UNUSED)
#ifdef FEAT_EVAL #ifdef FEAT_EVAL
/* /*
* Insert the result of an expression. * Insert the result of an expression.
* Need to save the current command line, to be able to enter
* a new one...
*/ */
new_cmdpos = -1; new_cmdpos = -1;
if (c == '=') if (c == '=')
@@ -1266,6 +1265,8 @@ cmdline_insert_reg(int *gotesc UNUSED)
} }
#endif #endif
} }
new_cmdpos = save_new_cmdpos;
// remove the double quote // remove the double quote
redrawcmd(); redrawcmd();

View File

@@ -1987,6 +1987,11 @@ func Test_cmdline_expr()
call assert_equal("\"e \<C-\>\<C-Y>", @:) call assert_equal("\"e \<C-\>\<C-Y>", @:)
endfunc endfunc
" This was making the insert position negative
func Test_cmdline_expr_register()
exe "sil! norm! ?\<C-\>e0\<C-R>0\<Esc>?\<C-\>e0\<CR>"
endfunc
" Test for 'imcmdline' and 'imsearch' " Test for 'imcmdline' and 'imsearch'
" This test doesn't actually test the input method functionality. " This test doesn't actually test the input method functionality.
func Test_cmdline_inputmethod() func Test_cmdline_inputmethod()

View File

@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
5148,
/**/ /**/
5147, 5147,
/**/ /**/