Patch 8.2.0103
Problem: Using null object with execute() has strange effects.
Solution: Give an error message ofr Job and Channel.
Files: src/testdir/test_execute_func.vim, src/globals.h, src/eval.c,
src/evalfunc.c
*** ../vim-8.2.0102/src/testdir/test_execute_func.vim 2019-12-01
14:54:55.000000000 +0100
--- src/testdir/test_execute_func.vim 2020-01-08 19:30:50.082871354 +0100
***************
*** 38,45 ****
call assert_equal("\nsomething", execute('echo "something"', 'silent!'))
call assert_equal("", execute('burp', 'silent!'))
call assert_fails('call execute("echo \"x\"", 3.4)', 'E806:')
-
- call assert_equal("", execute(test_null_string()))
endfunc
func Test_execute_list()
--- 38,43 ----
***************
*** 50,56 ****
call assert_equal("\n0\n1\n2\n3", execute(l))
call assert_equal("", execute([]))
- call assert_equal("", execute(test_null_list()))
endfunc
func Test_execute_does_not_change_col()
--- 48,53 ----
***************
*** 132,134 ****
--- 129,143 ----
tabclose
unlet xyz
endfunc
+
+ func Test_execute_null()
+ call assert_equal("", execute(test_null_string()))
+ call assert_equal("", execute(test_null_list()))
+ call assert_fails('call execute(test_null_dict())', 'E731:')
+ call assert_fails('call execute(test_null_blob())', 'E976:')
+ call assert_fails('call execute(test_null_partial())','E729:')
+ if has('job')
+ call assert_fails('call execute(test_null_job())', 'E908:')
+ call assert_fails('call execute(test_null_channel())', 'E908:')
+ endif
+ endfunc
*** ../vim-8.2.0102/src/globals.h 2020-01-01 15:46:43.665568753 +0100
--- src/globals.h 2020-01-08 19:20:21.397514379 +0100
***************
*** 1599,1604 ****
--- 1599,1605 ----
EXTERN char e_listblobreq[] INIT(= N_("E897: List or Blob required"));
EXTERN char e_listdictarg[] INIT(= N_("E712: Argument of %s must be a List
or Dictionary"));
EXTERN char e_listdictblobarg[] INIT(= N_("E896: Argument of %s must be
a List, Dictionary or Blob"));
+ EXTERN char e_inval_string[] INIT(= N_("E908: using an invalid value as a
String"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_readerrf[] INIT(= N_("E47: Error while reading
errorfile"));
*** ../vim-8.2.0102/src/eval.c 2020-01-08 18:56:16.951241888 +0100
--- src/eval.c 2020-01-08 19:19:42.185688408 +0100
***************
*** 5667,5673 ****
#endif
break;
case VAR_UNKNOWN:
! emsg(_("E908: using an invalid value as a String"));
break;
}
return NULL;
--- 5667,5673 ----
#endif
break;
case VAR_UNKNOWN:
! emsg(_(e_inval_string));
break;
}
return NULL;
*** ../vim-8.2.0102/src/evalfunc.c 2020-01-02 14:02:12.316159489 +0100
--- src/evalfunc.c 2020-01-08 19:22:36.664925301 +0100
***************
*** 2015,2020 ****
--- 2015,2026 ----
return;
++list->lv_refcount;
}
+ else if (argvars[arg_off].v_type == VAR_JOB
+ || argvars[arg_off].v_type == VAR_CHANNEL)
+ {
+ emsg(_(e_inval_string));
+ return;
+ }
else
{
cmd = tv_get_string_chk(&argvars[arg_off]);
*** ../vim-8.2.0102/src/version.c 2020-01-08 19:27:35.339668702 +0100
--- src/version.c 2020-01-08 19:31:41.642662229 +0100
***************
*** 744,745 ****
--- 744,747 ----
{ /* Add new patch number below this line */
+ /**/
+ 103,
/**/
--
bashian roulette:
$ ((RANDOM%6)) || rm -rf ~
/// 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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202001081832.008IWg7O013656%40masaka.moolenaar.net.