updated for version 7.0-173
diff --git a/src/eval.c b/src/eval.c
index e54d500..53ebc78 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3184,9 +3184,18 @@
 	    failed = TRUE;
 	    break;
 	}
+
+	/* Handle a function returning a Funcref, Dictionary or List. */
+	if (handle_subscript(&arg, &rettv, !eap->skip, TRUE) == FAIL)
+	{
+	    failed = TRUE;
+	    break;
+	}
+
 	clear_tv(&rettv);
 	if (doesrange || eap->skip)
 	    break;
+
 	/* Stop when immediately aborting on error, or when an interrupt
 	 * occurred or an exception was thrown but not caught.
 	 * get_func_tv() returned OK, so that the check for trailing
diff --git a/src/version.c b/src/version.c
index 1bf84d3..3310ef2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    173,
+/**/
     172,
 /**/
     171,