Patch 8.0.0345
Problem: islocked('d.changedtick') does not work.
Solution: Make it work.
Files: src/buffer.c, src/eval.c, src/evalfunc.c, src/vim.h,
src/testdir/test_changedtick.vim
*** ../vim-8.0.0344/src/buffer.c 2017-02-19 13:54:57.996966935 +0100
--- src/buffer.c 2017-02-21 20:30:48.544718101 +0100
***************
*** 884,890 ****
if (di != NULL)
{
! di->di_flags |= DI_FLAGS_LOCK | DI_FLAGS_FIX | DI_FLAGS_RO;
di->di_tv.v_type = VAR_NUMBER;
di->di_tv.v_lock = VAR_FIXED;
di->di_tv.vval.v_number = 0;
--- 884,890 ----
if (di != NULL)
{
! di->di_flags |= DI_FLAGS_FIX | DI_FLAGS_RO;
di->di_tv.v_type = VAR_NUMBER;
di->di_tv.v_lock = VAR_FIXED;
di->di_tv.vval.v_number = 0;
*** ../vim-8.0.0344/src/eval.c 2017-02-20 23:07:00.478656212 +0100
--- src/eval.c 2017-02-21 20:41:26.052528271 +0100
***************
*** 1811,1816 ****
--- 1811,1817 ----
*
* flags:
* GLV_QUIET: do not give error messages
+ * GLV_READ_ONLY: will not change the variable
* GLV_NO_AUTOLOAD: do not use script autoloading
*
* Returns a pointer to just after the name, including indexes.
***************
*** 2078,2084 ****
break;
}
/* existing variable, need to check if it can be changed */
! else if (var_check_ro(lp->ll_di->di_flags, name, FALSE))
{
clear_tv(&var1);
return NULL;
--- 2079,2086 ----
break;
}
/* existing variable, need to check if it can be changed */
! else if ((flags & GLV_READ_ONLY) == 0
! && var_check_ro(lp->ll_di->di_flags, name, FALSE))
{
clear_tv(&var1);
return NULL;
*** ../vim-8.0.0344/src/evalfunc.c 2017-02-17 16:31:16.921294136 +0100
--- src/evalfunc.c 2017-02-21 20:41:40.428433096 +0100
***************
*** 6561,6567 ****
rettv->vval.v_number = -1;
end = get_lval(get_tv_string(&argvars[0]), NULL, &lv, FALSE, FALSE,
! GLV_NO_AUTOLOAD, FNE_CHECK_START);
if (end != NULL && lv.ll_name != NULL)
{
if (*end != NUL)
--- 6561,6567 ----
rettv->vval.v_number = -1;
end = get_lval(get_tv_string(&argvars[0]), NULL, &lv, FALSE, FALSE,
! GLV_NO_AUTOLOAD | GLV_READ_ONLY, FNE_CHECK_START);
if (end != NULL && lv.ll_name != NULL)
{
if (*end != NUL)
*** ../vim-8.0.0344/src/vim.h 2017-02-01 13:14:11.026177020 +0100
--- src/vim.h 2017-02-21 20:40:35.408862969 +0100
***************
*** 2474,2483 ****
--- 2474,2485 ----
#define TFN_QUIET 2 /* no error messages */
#define TFN_NO_AUTOLOAD 4 /* do not use script autoloading */
#define TFN_NO_DEREF 8 /* do not dereference a Funcref */
+ #define TFN_READ_ONLY 16 /* will not change the var */
/* Values for get_lval() flags argument: */
#define GLV_QUIET TFN_QUIET /* no error messages */
#define GLV_NO_AUTOLOAD TFN_NO_AUTOLOAD /* do not use script
autoloading */
+ #define GLV_READ_ONLY TFN_READ_ONLY /* will not change the var */
#define DO_NOT_FREE_CNT 99999 /* refcount for dict or list that should not
be freed. */
*** ../vim-8.0.0344/src/testdir/test_changedtick.vim 2017-02-20
22:35:29.013423395 +0100
--- src/testdir/test_changedtick.vim 2017-02-21 20:39:05.941451793 +0100
***************
*** 32,37 ****
--- 32,43 ----
call assert_equal(v + 1, getbufvar(bnr, 'changedtick'))
endfunc
+ func Test_changedtick_islocked()
+ call assert_equal(0, islocked('b:changedtick'))
+ let d = b:
+ call assert_equal(0, islocked('d.changedtick'))
+ endfunc
+
func Test_changedtick_fixed()
call assert_fails('let b:changedtick = 4', 'E46:')
call assert_fails('let b:["changedtick"] = 4', 'E46:')
*** ../vim-8.0.0344/src/version.c 2017-02-20 23:07:00.478656212 +0100
--- src/version.c 2017-02-21 20:45:50.126895362 +0100
***************
*** 766,767 ****
--- 766,769 ----
{ /* Add new patch number below this line */
+ /**/
+ 345,
/**/
--
No engineer can take a shower without wondering if some sort of Teflon coating
would make showering unnecessary.
(Scott Adams - The Dilbert principle)
/// 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.