patch 8.2.0716: Vim9: another memory leak

Problem:    Vim9: another memory leak.
Solution:   Clear typval when failing.
diff --git a/src/version.c b/src/version.c
index 7434486..c8361eb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    716,
+/**/
     715,
 /**/
     714,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 3d3b3c3..67ca3de 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -4074,12 +4074,16 @@
 	    return FAIL;
     }
 
+    // Handle following "[]", ".member", etc.
+    // Then deal with prefixed '-', '+' and '!', if not done already.
     if (compile_subscript(arg, cctx, &start_leader, end_leader,
-					     bef1_tv, bef2_tv, new_tv) == FAIL)
+					     bef1_tv, bef2_tv, new_tv) == FAIL
+	    || compile_leader(cctx, start_leader, end_leader) == FAIL)
+    {
+	clear_tv(new_tv);
 	return FAIL;
-
-    // Now deal with prefixed '-', '+' and '!', if not done already.
-    return compile_leader(cctx, start_leader, end_leader);
+    }
+    return OK;
 }
 
 /*
@@ -4187,6 +4191,7 @@
 	{
 	    char_u buf[3];
 
+	    clear_tv(&tv1);
 	    vim_strncpy(buf, op, oplen);
 	    semsg(_(e_white_both), buf);
 	    return FAIL;
@@ -4194,12 +4199,18 @@
 
 	*arg = skipwhite(op + oplen);
 	if (may_get_next_line(op + oplen, arg, cctx) == FAIL)
+	{
+	    clear_tv(&tv1);
 	    return FAIL;
+	}
 
 	// get the second expression
 	tv2.v_type = VAR_UNKNOWN;
 	if (compile_expr6(arg, cctx, &tv1, &tv2) == FAIL)
+	{
+	    clear_tv(&tv1);
 	    return FAIL;
+	}
 
 	if (*op == '+' && tv1.v_type == VAR_NUMBER && tv2.v_type == VAR_NUMBER)
 	{