about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/utils.c13
-rw-r--r--Src/zsh.h1
2 files changed, 12 insertions, 2 deletions
diff --git a/Src/utils.c b/Src/utils.c
index fadf46470..5518a16c7 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -2935,14 +2935,23 @@ getshfunc(char *nam)
 char **
 subst_string_by_func(Shfunc func, char *arg1, char *orig)
 {
+    int osc = sfcontext;
     LinkList l = newlinklist();
+    char **ret;
+
     addlinknode(l, func->node.nam);
     if (arg1)
 	addlinknode(l, arg1);
     addlinknode(l, orig);
+    sfcontext = SFC_SUBST;
+
     if (doshfunc(func, l, 1))
-	return NULL;
-    return getaparam("reply");
+	ret = NULL;
+    else
+	ret = getaparam("reply");
+
+    sfcontext = osc;
+    return ret;
 }
 
 /**/
diff --git a/Src/zsh.h b/Src/zsh.h
index 1e043bf29..ddbf24048 100644
--- a/Src/zsh.h
+++ b/Src/zsh.h
@@ -1076,6 +1076,7 @@ struct shfunc {
 #define SFC_WIDGET   4		/* user defined widget */
 #define SFC_COMPLETE 5		/* called from completion code */
 #define SFC_CWIDGET  6		/* new style completion widget */
+#define SFC_SUBST    7          /* used to perform substitution task */
 
 /* tp in funcstack */