Patch 8.0.0268
Problem:    May get ml_get error when :luado deletes lines or switches to
            another buffer. (Nikolai Pavlov, issue #1421)
Solution:   Check the buffer and line every time.
Files:      src/if_lua.c, src/testdir/test_lua.vim, src/Makefile,
            src/testdir/Make_all.mak


*** ../vim-8.0.0267/src/if_lua.c        2016-08-28 18:08:52.000000000 +0200
--- src/if_lua.c        2017-01-29 22:43:46.955461526 +0100
***************
*** 1716,1721 ****
--- 1716,1723 ----
      const char *s = (const char *) eap->arg;
      luaL_Buffer b;
      size_t len;
+     buf_T *was_curbuf = curbuf;
+ 
      if (lua_init() == FAIL) return;
      if (u_save(eap->line1 - 1, eap->line2 + 1) == FAIL)
      {
***************
*** 1739,1744 ****
--- 1741,1750 ----
      lua_replace(L, -2); /* function -> body */
      for (l = eap->line1; l <= eap->line2; l++)
      {
+       /* Check the line number, the command my have deleted lines. */
+       if (l > curbuf->b_ml.ml_line_count)
+           break;
+ 
        lua_pushvalue(L, -1); /* function */
        luaV_pushline(L, curbuf, l); /* current line as arg */
        lua_pushinteger(L, l); /* current line number as arg */
***************
*** 1747,1752 ****
--- 1753,1761 ----
            luaV_emsg(L);
            break;
        }
+       /* Catch the command switching to another buffer. */
+       if (curbuf != was_curbuf)
+           break;
        if (lua_isstring(L, -1)) /* update line? */
        {
  #ifdef HAVE_SANDBOX
*** ../vim-8.0.0267/src/testdir/test_lua.vim    2017-01-29 22:47:41.069920545 
+0100
--- src/testdir/test_lua.vim    2017-01-29 22:39:50.273018239 +0100
***************
*** 0 ****
--- 1,22 ----
+ " Tests for Lua.
+ " TODO: move tests from test85.in here.
+ 
+ if !has('lua')
+   finish
+ endif
+ 
+ func Test_luado()
+   new
+   call setline(1, ['one', 'two', 'three'])
+   luado vim.command("%d_")
+   bwipe!
+ 
+   " Check switching to another buffer does not trigger ml_get error.
+   new
+   let wincount = winnr('$')
+   call setline(1, ['one', 'two', 'three'])
+   luado vim.command("new")
+   call assert_equal(wincount + 1, winnr('$'))
+   bwipe!
+   bwipe!
+ endfunc
*** ../vim-8.0.0267/src/Makefile        2017-01-29 21:30:48.332627641 +0100
--- src/Makefile        2017-01-29 22:41:27.012382108 +0100
***************
*** 2147,2152 ****
--- 2147,2153 ----
        test_langmap \
        test_largefile \
        test_lispwords \
+       test_lua \
        test_man \
        test_mapping \
        test_marks \
*** ../vim-8.0.0267/src/testdir/Make_all.mak    2017-01-29 21:30:48.332627641 
+0100
--- src/testdir/Make_all.mak    2017-01-29 22:41:41.152289112 +0100
***************
*** 164,169 ****
--- 164,170 ----
            test_job_fails.res \
            test_json.res \
            test_langmap.res \
+           test_lua.res \
            test_man.res \
            test_marks.res \
            test_matchadd_conceal.res \
***************
*** 172,179 ****
            test_nested_function.res \
            test_netbeans.res \
            test_normal.res \
-           test_paste.res \
            test_packadd.res \
            test_perl.res \
            test_profile.res \
            test_python2.res \
--- 173,180 ----
            test_nested_function.res \
            test_netbeans.res \
            test_normal.res \
            test_packadd.res \
+           test_paste.res \
            test_perl.res \
            test_profile.res \
            test_python2.res \
*** ../vim-8.0.0267/src/version.c       2017-01-29 21:49:45.673012259 +0100
--- src/version.c       2017-01-29 22:41:07.388511166 +0100
***************
*** 766,767 ****
--- 766,769 ----
  {   /* Add new patch number below this line */
+ /**/
+     268,
  /**/

-- 
Time flies like an arrow.
Fruit flies like a banana.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.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

--- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui