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;
|
||||
buf = (char_u *)ga.ga_data;
|
||||
buf[ga.ga_len++] = NUL;
|
||||
len = ga.ga_len;
|
||||
}
|
||||
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,
|
||||
sp->fp) == NULL)
|
||||
break;
|
||||
len = ga.ga_len + (int)STRLEN(buf + ga.ga_len);
|
||||
}
|
||||
len = ga.ga_len + (int)STRLEN(buf + ga.ga_len);
|
||||
#ifdef USE_CRNL
|
||||
// Ignore a trailing CTRL-Z, when in Dos mode. Only recognize the
|
||||
// CTRL-Z by its own, or after a NL.
|
||||
|
@ -652,6 +652,17 @@ func Test_source_buffer_long_line()
|
||||
norm300gr0
|
||||
so
|
||||
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
|
||||
|
||||
|
||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4974,
|
||||
/**/
|
||||
4973,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user