vim-patch:8.0.0227 (#7548)

Problem:    Crash when 'fileformat' is forced to "dos" and the first line in
            the file is empty and does not have a CR character.
Solution:   Don't check for CR before the start of the buffer.

2aa5f696b9
This commit is contained in:
Justin M. Keyes
2017-11-13 08:30:25 +01:00
committed by GitHub
parent 8d8212d384
commit 8fff2ef74a
2 changed files with 3 additions and 2 deletions

View File

@@ -1622,7 +1622,8 @@ rewind_retry:
*ptr = NUL; /* end of line */ *ptr = NUL; /* end of line */
len = (colnr_T)(ptr - line_start + 1); len = (colnr_T)(ptr - line_start + 1);
if (fileformat == EOL_DOS) { if (fileformat == EOL_DOS) {
if (ptr[-1] == CAR) { /* remove CR */ if (ptr > line_start && ptr[-1] == CAR) {
// remove CR before NL
ptr[-1] = NUL; ptr[-1] = NUL;
len--; len--;
} else if (ff_error != EOL_DOS) { } else if (ff_error != EOL_DOS) {

View File

@@ -17,7 +17,7 @@ func Test_fileformat_after_bw()
endfunc endfunc
func Test_fileformat_autocommand() func Test_fileformat_autocommand()
let filecnt = ["\<CR>", "foobar\<CR>", "eins\<CR>", "\<CR>", "zwei\<CR>", "drei", "vier", "fünf", ""] let filecnt = ["", "foobar\<CR>", "eins\<CR>", "\<CR>", "zwei\<CR>", "drei", "vier", "fünf", ""]
let ffs = &ffs let ffs = &ffs
call writefile(filecnt, 'Xfile', 'b') call writefile(filecnt, 'Xfile', 'b')
au BufReadPre Xfile set ffs=dos ff=dos au BufReadPre Xfile set ffs=dos ff=dos