summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2010-08-14 14:32:54 +0200
committerBram Moolenaar <bram@vim.org>2010-08-14 14:32:54 +0200
commita4c517ca951192d1cddc44de038545f43cf16dae (patch)
tree68027c1addea32603b8cc610c85406a3bd5b3cbd
parent22abf31da59646984d5bf4de723f8cd2967fdfe6 (diff)
downloadvim-a4c517ca951192d1cddc44de038545f43cf16dae.tar.gz
Fix: in compatible mode, in an empty buffer, ":r file" triggered an error
message.
-rw-r--r--src/fileio.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 368fd7ad..b6127d9d 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -317,20 +317,14 @@ readfile(fname, sfname, from, lines_to_skip, lines_to_read, eap, flags)
char_u conv_rest[CONV_RESTLEN];
int conv_restlen = 0; /* nr of bytes in conv_rest[] */
#endif
-
#ifdef FEAT_AUTOCMD
- /* Remember the initial values of curbuf, curbuf->b_ffname and
- * curbuf->b_fname to detect whether they are altered as a result of
- * executing nasty autocommands. Also check if "fname" and "sfname"
- * point to one of these values. */
- buf_T *old_curbuf = curbuf;
- char_u *old_b_ffname = curbuf->b_ffname;
- char_u *old_b_fname = curbuf->b_fname;
- int using_b_ffname = (fname == curbuf->b_ffname)
- || (sfname == curbuf->b_ffname);
- int using_b_fname = (fname == curbuf->b_fname)
- || (sfname == curbuf->b_fname);
+ buf_T *old_curbuf;
+ char_u *old_b_ffname;
+ char_u *old_b_fname;
+ int using_b_ffname;
+ int using_b_fname;
#endif
+
write_no_eol_lnum = 0; /* in case it was set by the previous read */
/*
@@ -349,6 +343,19 @@ readfile(fname, sfname, from, lines_to_skip, lines_to_read, eap, flags)
return FAIL;
}
+#ifdef FEAT_AUTOCMD
+ /* Remember the initial values of curbuf, curbuf->b_ffname and
+ * curbuf->b_fname to detect whether they are altered as a result of
+ * executing nasty autocommands. Also check if "fname" and "sfname"
+ * point to one of these values. */
+ old_curbuf = curbuf;
+ old_b_ffname = curbuf->b_ffname;
+ old_b_fname = curbuf->b_fname;
+ using_b_ffname = (fname == curbuf->b_ffname)
+ || (sfname == curbuf->b_ffname);
+ using_b_fname = (fname == curbuf->b_fname) || (sfname == curbuf->b_fname);
+#endif
+
/* After reading a file the cursor line changes but we don't want to
* display the line. */
ex_no_reprint = TRUE;