patch 8.2.2199: first write after setting 'eol' does not have NL added

Problem:    First write after setting 'eol' does not have NL added. (Tomáš
            Janoušek)
Solution:   Only use b_no_eol_lnum when doing a binary write. (closes #7535)
This commit is contained in:
Bram Moolenaar
2020-12-23 18:54:57 +01:00
parent 23999d799c
commit b3c8b1d254
3 changed files with 21 additions and 1 deletions

View File

@ -2031,7 +2031,7 @@ restore_backup:
if (end == 0 if (end == 0
|| (lnum == end || (lnum == end
&& (write_bin || !buf->b_p_fixeol) && (write_bin || !buf->b_p_fixeol)
&& (lnum == buf->b_no_eol_lnum && ((write_bin && lnum == buf->b_no_eol_lnum)
|| (lnum == buf->b_ml.ml_line_count || (lnum == buf->b_ml.ml_line_count
&& !buf->b_p_eol)))) && !buf->b_p_eol))))
{ {

View File

@ -676,4 +676,22 @@ func Test_readwrite_file_with_bom()
%bw! %bw!
endfunc endfunc
func Test_read_write_bin()
" write file missing EOL
call writefile(['noeol'], "XNoEolSetEol", 'bS')
call assert_equal(0z6E6F656F6C, readfile('XNoEolSetEol', 'B'))
" when file is read 'eol' is off
set ff=unix nofixeol
e XNoEolSetEol
call assert_equal(0, &eol)
" writing with 'eol' set adds the newline
setlocal eol
w
call assert_equal(0z6E6F656F6C0A, readfile('XNoEolSetEol', 'B'))
call delete('XNoEolSetEol')
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@ -750,6 +750,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 */
/**/
2199,
/**/ /**/
2198, 2198,
/**/ /**/