To: vim_dev@googlegroups.com Subject: Patch 8.0.1423 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.1423 Problem: Error in return not caught by try/catch. Solution: Call update_force_abort(). (Yasuhiro Matsomoto, closes #2483) Files: src/testdir/test_eval.in, src/testdir/test_eval_stuff.vim, src/Makefile, src/testdir/Make_all.mak, src/userfunc.c *** ../vim-8.0.1422/src/testdir/test_eval.in 2016-01-16 16:28:28.000000000 +0100 --- src/testdir/test_eval.in 2017-12-22 21:45:54.912000069 +0100 *************** *** 1,5 **** --- 1,7 ---- Test for various eval features. vim: set ft=vim : + NOTE: Do not add more here, use new style test test_eval_stuff.vim + Note: system clipboard is saved, changed and restored. clipboard contents *************** *** 134,143 **** let _clipreg = ['*', getreg('*'), getregtype('*')] let _clipopt = &cb let &cb='unnamed' ! 5y AR * tabdo :windo :echo "hi" ! 6y AR * let &cb=_clipopt call call('setreg', _clipreg) --- 136,145 ---- let _clipreg = ['*', getreg('*'), getregtype('*')] let _clipopt = &cb let &cb='unnamed' ! 7y AR * tabdo :windo :echo "hi" ! 8y AR * let &cb=_clipopt call call('setreg', _clipreg) *** ../vim-8.0.1422/src/testdir/test_eval_stuff.vim 2017-12-22 21:49:13.234952297 +0100 --- src/testdir/test_eval_stuff.vim 2017-12-22 21:39:48.097948458 +0100 *************** *** 0 **** --- 1,13 ---- + " Tests for various eval things. + + function s:foo() abort + try + return [] == 0 + catch + return 1 + endtry + endfunction + + func Test_catch_return_with_error() + call assert_equal(1, s:foo()) + endfunc *** ../vim-8.0.1422/src/Makefile 2017-12-11 22:55:08.556254393 +0100 --- src/Makefile 2017-12-22 21:40:11.221825069 +0100 *************** *** 2147,2152 **** --- 2151,2157 ---- test_edit \ test_erasebackword \ test_escaped_glob \ + test_eval_stuff \ test_ex_undo \ test_ex_z \ test_exec_while_if \ *** ../vim-8.0.1422/src/testdir/Make_all.mak 2017-12-11 22:55:08.556254393 +0100 --- src/testdir/Make_all.mak 2017-12-22 21:40:40.853667086 +0100 *************** *** 94,99 **** --- 94,100 ---- test_edit.res \ test_erasebackword.res \ test_escaped_glob.res \ + test_eval_stuff.res \ test_exec_while_if.res \ test_exists.res \ test_exists_autocmd.res \ *** ../vim-8.0.1422/src/userfunc.c 2017-12-07 22:22:46.158236891 +0100 --- src/userfunc.c 2017-12-22 21:41:09.413514956 +0100 *************** *** 2972,2977 **** --- 2972,2980 ---- /* It's safer to return also on error. */ else if (!eap->skip) { + /* In return statement, cause_abort should be force_abort. */ + update_force_abort(); + /* * Return unless the expression evaluation has been cancelled due to an * aborting error, an interrupt, or an exception. *** ../vim-8.0.1422/src/version.c 2017-12-22 21:12:28.419253561 +0100 --- src/version.c 2017-12-22 21:38:15.482443665 +0100 *************** *** 773,774 **** --- 773,776 ---- { /* Add new patch number below this line */ + /**/ + 1423, /**/ -- hundred-and-one symptoms of being an internet addict: 149. You find your computer sexier than your girlfriend /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///