From: Bram Moolenaar Date: Sun, 31 Jan 2016 17:45:24 +0000 (+0100) Subject: patch 7.4.1228 X-Git-Tag: v7.4.1228 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=155500077c80cdb5d9c63996000c011b66a676bf;p=thirdparty%2Fvim.git patch 7.4.1228 Problem: copy() and deepcopy() fail with special variables. (Nikolai Pavlov) Solution: Make it work. Add a test. Closes #614. --- diff --git a/src/eval.c b/src/eval.c index a4f5531d96..4c530a0bf2 100644 --- a/src/eval.c +++ b/src/eval.c @@ -21939,6 +21939,7 @@ item_copy( #endif case VAR_STRING: case VAR_FUNC: + case VAR_SPECIAL: copy_tv(from, to); break; case VAR_LIST: diff --git a/src/testdir/test_viml.vim b/src/testdir/test_viml.vim index f7b34146ac..6c755bb534 100644 --- a/src/testdir/test_viml.vim +++ b/src/testdir/test_viml.vim @@ -1001,6 +1001,16 @@ func Test_type() call assert_equal(v:none, eval(string(v:none))) call assert_equal(v:null, eval(string(v:null))) + call assert_equal(v:false, copy(v:false)) + call assert_equal(v:true, copy(v:true)) + call assert_equal(v:none, copy(v:none)) + call assert_equal(v:null, copy(v:null)) + + call assert_equal([v:false], deepcopy([v:false])) + call assert_equal([v:true], deepcopy([v:true])) + call assert_equal([v:none], deepcopy([v:none])) + call assert_equal([v:null], deepcopy([v:null])) + call assert_true(empty(v:false)) call assert_false(empty(v:true)) call assert_true(empty(v:null)) diff --git a/src/version.c b/src/version.c index 1130a20a2e..6eb8b240d8 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1228, /**/ 1227, /**/