# HG changeset patch # User Christian Brabandt # Date 1526902206 -7200 # Node ID 4a41a169e5eac71eb479b681c5ec42c7cd89063a # Parent 3c3c934eccc0326c8c57fc9ca471153d86eb4402 patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing commit https://github.com/vim/vim/commit/f88a5bc10232cc3fac92dba4e8455f4c14311f8e Author: Bram Moolenaar Date: Mon May 21 13:28:44 2018 +0200 patch 8.1.0011: maparg() and mapcheck() confuse empty and non-existing Problem: maparg() and mapcheck() confuse empty and non-existing. Solution: Return for an existing non-empty mapping. (closes https://github.com/vim/vim/issues/2940) diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -7383,7 +7383,12 @@ get_maparg(typval_T *argvars, typval_T * { /* Return a string. */ if (rhs != NULL) - rettv->vval.v_string = str2special_save(rhs, FALSE); + { + if (*rhs == NUL) + rettv->vval.v_string = vim_strsave((char_u *)""); + else + rettv->vval.v_string = str2special_save(rhs, FALSE); + } } else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL) diff --git a/src/testdir/test_maparg.vim b/src/testdir/test_maparg.vim --- a/src/testdir/test_maparg.vim +++ b/src/testdir/test_maparg.vim @@ -29,9 +29,13 @@ function Test_maparg() \ maparg('foo', '', 0, 1)) map abc xx - call assert_equal(maparg('abc'), "xrx") + call assert_equal("xrx", maparg('abc')) map abc yy - call assert_equal(maparg('abc'), "yRy") + call assert_equal("yRy", maparg('abc')) + + map abc + call assert_equal("", maparg('abc')) + unmap abc endfunction function Test_range_map() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 11, +/**/ 10, /**/ 9,