From 6d0efdaab5d97684056598f0a38cc98d2568f8d7 Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Tue, 4 Jan 2011 19:03:27 +0100
Subject: [PATCH] updated for version 7.3.097 Problem:    Using ":call" inside
 "if 0" does not see that a function returns a             Dict and gives
 error for "." as string concatenation. Solution:   Use eval0() to skip over
 the expression.  (Yasuhiro Matsumoto)

---
 src/eval.c    | 9 +++++++++
 src/version.c | 2 ++
 2 files changed, 11 insertions(+)

diff --git a/src/eval.c b/src/eval.c
index 7d00c0e478..a73731198b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3335,6 +3335,15 @@ ex_call(eap)
     int		failed = FALSE;
     funcdict_T	fudi;
 
+    if (eap->skip)
+    {
+	/* trans_function_name() doesn't work well when skipping, use eval0()
+	 * instead to skip to any following command, e.g. for:
+	 *   :if 0 | call dict.foo().bar() | endif  */
+	eval0(eap->arg, &rettv, &eap->nextcmd, FALSE);
+	return;
+    }
+
     tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi);
     if (fudi.fd_newkey != NULL)
     {
diff --git a/src/version.c b/src/version.c
index 3e56bdf3b1..05e50df553 100644
--- a/src/version.c
+++ b/src/version.c
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    97,
 /**/
     96,
 /**/
-- 
GitLab