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,