forked from aniani/vim
patch 8.2.4974: ":so" command may read after end of buffer
Problem: ":so" command may read after end of buffer. Solution: Compute length of text properly.
This commit is contained in:
parent
bd3a9d2c94
commit
4748c4bd64
@ -1965,6 +1965,7 @@ get_one_sourceline(source_cookie_T *sp)
|
|||||||
break;
|
break;
|
||||||
buf = (char_u *)ga.ga_data;
|
buf = (char_u *)ga.ga_data;
|
||||||
buf[ga.ga_len++] = NUL;
|
buf[ga.ga_len++] = NUL;
|
||||||
|
len = ga.ga_len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1972,8 +1973,8 @@ get_one_sourceline(source_cookie_T *sp)
|
|||||||
if (fgets((char *)buf + ga.ga_len, ga.ga_maxlen - ga.ga_len,
|
if (fgets((char *)buf + ga.ga_len, ga.ga_maxlen - ga.ga_len,
|
||||||
sp->fp) == NULL)
|
sp->fp) == NULL)
|
||||||
break;
|
break;
|
||||||
|
len = ga.ga_len + (int)STRLEN(buf + ga.ga_len);
|
||||||
}
|
}
|
||||||
len = ga.ga_len + (int)STRLEN(buf + ga.ga_len);
|
|
||||||
#ifdef USE_CRNL
|
#ifdef USE_CRNL
|
||||||
// Ignore a trailing CTRL-Z, when in Dos mode. Only recognize the
|
// Ignore a trailing CTRL-Z, when in Dos mode. Only recognize the
|
||||||
// CTRL-Z by its own, or after a NL.
|
// CTRL-Z by its own, or after a NL.
|
||||||
|
@ -652,6 +652,17 @@ func Test_source_buffer_long_line()
|
|||||||
norm300gr0
|
norm300gr0
|
||||||
so
|
so
|
||||||
bwipe!
|
bwipe!
|
||||||
|
|
||||||
|
let lines =<< trim END
|
||||||
|
new
|
||||||
|
norm 10a0000000000ø00000000000
|
||||||
|
norm i0000000000000000000
|
||||||
|
silent! so
|
||||||
|
END
|
||||||
|
call writefile(lines, 'Xtest.vim')
|
||||||
|
source Xtest.vim
|
||||||
|
bwipe!
|
||||||
|
call delete('Xtest.vim')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
|
@ -746,6 +746,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 */
|
||||||
|
/**/
|
||||||
|
4974,
|
||||||
/**/
|
/**/
|
||||||
4973,
|
4973,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user