mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -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:
@@ -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();
|
||||||
|
|
||||||
|
@@ -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()
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user