I wrote:
> Gary Johnson wrote:
>
> > In a directory containing a simple text file named 'mary', execute
> > the following:
> >
> > $ vim -u NONE -i NONE
> > :r mary
> >
> > The result is the following two error messages:
> >
> > E812: Autocommands changed buffer or buffer name
> > E484: Can't open file mary
> >
> > I don't know what autocommand that could be since I started Vim
> > without plugins and :scriptnames shows nothing.
> >
> > This works without error if Vim is started in 'noncompatible' mode
> > or when using Vim 6.3.
>
> I can reproduce it. Strange that nobody noticed until now.
>
> I'll fix it ASAP.
It was most likely introduced by patch 7.2.132, sent out March 5 2009.
This patch should fix it, please verify it doesn't introduce any new
problems:
--- a/src/fileio.c 2010-08-08 18:45:40.000000000 +0200
+++ b/src/fileio.c 2010-08-14 14:20:54.000000000 +0200
@@ -317,20 +317,14 @@
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 @@
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;
--
hundred-and-one symptoms of being an internet addict:
66. You create a homepage with the impression to cure the afflicted...but
your hidden agenda is to receive more e-mail.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php