]> granicus.if.org Git - vim/commitdiff
patch 8.0.0227: crash with ff=dos when first line in file has no CR v8.0.0227
authorBram Moolenaar <Bram@vim.org>
Tue, 24 Jan 2017 14:46:48 +0000 (15:46 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 24 Jan 2017 14:46:48 +0000 (15:46 +0100)
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.

src/fileio.c
src/testdir/test_fileformat.vim
src/version.c

index 39e356f88e4e09bf66c84a308266077cd47d8778..9380953d2110fe07fbf77b795282951e9c57a69f 100644 (file)
@@ -2251,8 +2251,9 @@ rewind_retry:
                        len = (colnr_T)(ptr - line_start + 1);
                        if (fileformat == EOL_DOS)
                        {
-                           if (ptr[-1] == CAR) /* remove CR */
+                           if (ptr > line_start && ptr[-1] == CAR)
                            {
+                               /* remove CR before NL */
                                ptr[-1] = NUL;
                                --len;
                            }
index de505d3bd0d2de90d9c99477c67f1b721b276142..8dc25f62b16f08e31550708a9262054a9e844300 100644 (file)
@@ -17,7 +17,7 @@ func Test_fileformat_after_bw()
 endfunc
 
 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
   call writefile(filecnt, 'Xfile', 'b')
   au BufReadPre Xfile set ffs=dos ff=dos
index 7087f6424d2e6b80e6f10d17ed92893c469b9e38..84dde7353e9409a4c345e0f0ba397fa6d71e6d29 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    227,
 /**/
     226,
 /**/