patch 7.4.1181
Problem: free_tv() can't handle special variables. (Damien)
Solution: Add the variable type.
diff --git a/src/eval.c b/src/eval.c
index 590834f..5f05c3d 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -21608,6 +21608,7 @@
case VAR_FLOAT:
#endif
case VAR_UNKNOWN:
+ case VAR_SPECIAL:
break;
default:
EMSG2(_(e_intern2), "free_tv()");
diff --git a/src/testdir/test_viml.vim b/src/testdir/test_viml.vim
index 3c140c8..f7b3414 100644
--- a/src/testdir/test_viml.vim
+++ b/src/testdir/test_viml.vim
@@ -1005,6 +1005,16 @@
call assert_false(empty(v:true))
call assert_true(empty(v:null))
call assert_true(empty(v:none))
+
+ func ChangeYourMind()
+ try
+ return v:true
+ finally
+ return 'something else'
+ endtry
+ endfunc
+
+ call ChangeYourMind()
endfunc
"-------------------------------------------------------------------------------
diff --git a/src/version.c b/src/version.c
index ee6ac48..53f5ded 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1181,
+/**/
1180,
/**/
1179,