On Mon, Sep 4, 2017 at 3:01 AM, Christian Brabandt <cbli...@256bit.org>
wrote:

>
> On Mo, 04 Sep 2017, Manuel Ortega wrote:
>
> > 8.0.1039 broke setline().  I know this by bisection.  To reproduce:
> >
> > Make a file, testvimrc, that contains one line: "source foo".
> >
> > Create the file "foo", and let it contain only the following:
> >
> >   call setline(1, "Hello There")
> >
> > To show the bug, do: vim -u testvimrc -u NONE -N
> >
> > Expected behavior, which was also the actual behavior before 8.0.1039:
>  I see a
> > new buffer with "Hello There" on the first line.
> >
> > Actual behavior: after 8.0.1039: I see no text whatsoever in the buffer.
> >
> > This is on macOS 10.12.6.
>
> I see the problem. There is a new check for buf->b_ml.ml_mfp == NULL in
> set_buffer_lines that wasn't there previously and this was no problem
> before, because ml_replace would open the buffer if ml_mfp would be
> null. I think we can safely change this check to:
>
> diff --git a/src/evalfunc.c b/src/evalfunc.c
> index 2692de61f..e68e0b00e 100644
> --- a/src/evalfunc.c
> +++ b/src/evalfunc.c
> @@ -9885,7 +9885,7 @@ set_buffer_lines(buf_T *buf, linenr_T lnum, typval_T
> *lines, typval_T *rettv)
>      buf_T      *curbuf_save;
>      int                is_curbuf = buf == curbuf;
>
> -    if (buf == NULL || buf->b_ml.ml_mfp == NULL || lnum < 1)
> +    if (buf == NULL || (buf->b_ml.ml_mfp == NULL && !is_curbuf)|| lnum <
> 1)
>      {
>         rettv->vval.v_number = 1;       /* FAIL */
>         return;
>
>
> or perhaps even completely remove the check. Not sure if this however
> will break in some situations, but at least I could not break it using
>
>     :call setbufline(5, 1, 'foobar')
>
> in the startupfile (when buffer number 5 does not exist yet.
>

I've tried this out over the last few hours and it seems to have restored
the old behavior.  I am, however, unqualified to say whether it's the Right
Fix.

-Manny

-- 
-- 
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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to