To: vim_dev@googlegroups.com Subject: Patch 8.2.0507 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0507 (after 8.2.0472) Problem: Getbufvar() may get the wrong dictionary. (David le Blanc) Solution: Check for empty name. (closes #5878) Files: src/evalvars.c, src/testdir/test_functions.vim *** ../vim-8.2.0506/src/evalvars.c 2020-04-02 18:50:42.419773128 +0200 --- src/evalvars.c 2020-04-03 18:42:29.403241509 +0200 *************** *** 2382,2387 **** --- 2382,2388 ---- /* * Find variable "varname" in hashtab "ht" with name "htname". + * When "varname" is empty returns curwin/curtab/etc vars dictionary. * Returns NULL if not found. */ dictitem_T * *************** *** 3503,3510 **** else { // Look up the variable. ! // Let getbufvar({nr}, "") return the "b:" dictionary. ! v = find_var_in_ht(&buf->b_vars->dv_hashtab, 'b', varname, FALSE); if (v != NULL) { copy_tv(&v->di_tv, rettv); --- 3504,3515 ---- else { // Look up the variable. ! if (*varname == NUL) ! // Let getbufvar({nr}, "") return the "b:" dictionary. ! v = &buf->b_bufvar; ! else ! v = find_var_in_ht(&buf->b_vars->dv_hashtab, 'b', ! varname, FALSE); if (v != NULL) { copy_tv(&v->di_tv, rettv); *** ../vim-8.2.0506/src/testdir/test_functions.vim 2020-03-26 16:50:53.413148743 +0100 --- src/testdir/test_functions.vim 2020-04-03 18:39:47.435923188 +0200 *************** *** 841,846 **** --- 841,856 ---- call assert_equal('iso-8859-2', getbufvar(bufnr('%'), '&fenc')) close + " Get the b: dict. + let b:testvar = 'one' + new + let b:testvar = 'two' + let thebuf = bufnr() + wincmd w + call assert_equal('two', getbufvar(thebuf, 'testvar')) + call assert_equal('two', getbufvar(thebuf, '').testvar) + bwipe! + set fileformats& endfunc *** ../vim-8.2.0506/src/version.c 2020-04-03 18:13:54.446315826 +0200 --- src/version.c 2020-04-03 18:42:48.387162157 +0200 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 507, /**/ -- ROBIN: (warily) And if you get a question wrong? ARTHUR: You are cast into the Gorge of Eternal Peril. ROBIN: Oh ... wacho! "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// 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 ///