patch 9.0.0826: if 'endofline' is set CTRL-Z may be written in a wrong place
Problem: If 'endofline' is set the CTRL-Z may be written in the wrong
place.
Solution: Write CTRL-Z at the end of the file. Update the help to explain
the possibilities better. (Ken Takata, closes #11486)
diff --git a/src/bufwrite.c b/src/bufwrite.c
index 12c5c7a..f3adcc3 100644
--- a/src/bufwrite.c
+++ b/src/bufwrite.c
@@ -2050,10 +2050,6 @@
len = 0;
write_info.bw_start_lnum = lnum;
}
- if (!buf->b_p_fixeol && buf->b_p_eof)
- // write trailing CTRL-Z
- (void)write_eintr(write_info.bw_fd, "\x1a", 1);
-
// write failed or last line has no EOL: stop here
if (end == 0
|| (lnum == end
@@ -2158,6 +2154,13 @@
nchars += len;
}
+ if (!buf->b_p_fixeol && buf->b_p_eof)
+ {
+ // write trailing CTRL-Z
+ (void)write_eintr(write_info.bw_fd, "\x1a", 1);
+ nchars++;
+ }
+
// Stop when writing done or an error was encountered.
if (!checking_conversion || end == 0)
break;