Patch 8.1.0613
Problem: When executing an insecure function the secure flag is stuck.
(Gabriel Barta)
Solution: Restore "secure" instead of decrementing it. (closes #3705)
Files: src/testdir/test_autocmd.vim, src/option.c, src/buffer.c
*** ../vim-8.1.0612/src/testdir/test_autocmd.vim 2018-12-16
15:37:58.866807609 +0100
--- src/testdir/test_autocmd.vim 2018-12-21 12:56:42.539308810 +0100
***************
*** 650,655 ****
--- 650,677 ----
"delfunc! AutoCommandOptionSet
endfunc
+ func Test_OptionSet_modeline()
+ call test_override('starting', 1)
+ au! OptionSet
+ augroup set_tabstop
+ au OptionSet tabstop call timer_start(1, {-> execute("echo 'Handler
called'", "")})
+ augroup END
+ call writefile(['vim: set ts=7 sw=5 :', 'something'], 'XoptionsetModeline')
+ set modeline
+ let v:errmsg = ''
+ call assert_fails('split XoptionsetModeline', 'E12:')
+ call assert_equal(7, &ts)
+ call assert_equal('', v:errmsg)
+
+ augroup set_tabstop
+ au!
+ augroup END
+ bwipe!
+ set ts&
+ call delete('XoptionsetModeline')
+ call test_override('starting', 0)
+ endfunc
+
" Test for Bufleave autocommand that deletes the buffer we are about to edit.
func Test_BufleaveWithDelete()
new | edit Xfile1
*** ../vim-8.1.0612/src/option.c 2018-12-16 18:19:56.138140742 +0100
--- src/option.c 2018-12-21 12:54:17.032357226 +0100
***************
*** 5214,5220 ****
{
long_u *p = insecure_flag(opt_idx, opt_flags);
! int did_inc_secure = FALSE;
// When an option is set in the sandbox, from a
// modeline or in secure mode, then deal with side
--- 5214,5220 ----
{
long_u *p = insecure_flag(opt_idx, opt_flags);
! int secure_saved = secure;
// When an option is set in the sandbox, from a
// modeline or in secure mode, then deal with side
***************
*** 5227,5247 ****
#endif
|| (opt_flags & OPT_MODELINE)
|| (!value_is_replaced && (*p &
P_INSECURE)))
- {
- did_inc_secure = TRUE;
++secure;
- }
! // Handle side effects, and set the global value for
! // ":set" on local options. Note: when setting
'syntax'
! // or 'filetype' autocommands may be triggered that
can
! // cause havoc.
! errmsg = did_set_string_option(opt_idx, (char_u
**)varp,
new_value_alloced, oldval, errbuf,
opt_flags, &value_checked);
! if (did_inc_secure)
! --secure;
}
#if defined(FEAT_EVAL)
--- 5227,5244 ----
#endif
|| (opt_flags & OPT_MODELINE)
|| (!value_is_replaced && (*p &
P_INSECURE)))
++secure;
! // Handle side effects, and set the global value
! // for ":set" on local options. Note: when setting
! // 'syntax' or 'filetype' autocommands may be
! // triggered that can cause havoc.
! errmsg = did_set_string_option(
! opt_idx, (char_u **)varp,
new_value_alloced, oldval, errbuf,
opt_flags, &value_checked);
! secure = secure_saved;
}
#if defined(FEAT_EVAL)
*** ../vim-8.1.0612/src/buffer.c 2018-12-13 22:17:52.873941502 +0100
--- src/buffer.c 2018-12-21 12:55:36.679783373 +0100
***************
*** 5519,5524 ****
--- 5519,5525 ----
if (*s != NUL) /* skip over an empty "::" */
{
+ int secure_save = secure;
#ifdef FEAT_EVAL
save_current_sctx = current_sctx;
current_sctx.sc_sid = SID_MODELINE;
***************
*** 5530,5536 ****
retval = do_set(s, OPT_MODELINE | OPT_LOCAL | flags);
! --secure;
#ifdef FEAT_EVAL
current_sctx = save_current_sctx;
#endif
--- 5531,5537 ----
retval = do_set(s, OPT_MODELINE | OPT_LOCAL | flags);
! secure = secure_save;
#ifdef FEAT_EVAL
current_sctx = save_current_sctx;
#endif
*** ../vim-8.1.0612/src/version.c 2018-12-21 11:48:48.324680461 +0100
--- src/version.c 2018-12-21 12:52:28.649137990 +0100
***************
*** 801,802 ****
--- 801,804 ----
{ /* Add new patch number below this line */
+ /**/
+ 613,
/**/
--
Give a man a computer program and you give him a headache,
but teach him to program computers and you give him the power
to create headaches for others for the rest of his life...
R. B. Forest
/// 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.