about summary refs log tree commit diff
path: root/Src/subst.c
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@zsh.org>2023-09-16 20:51:27 -0700
committerBart Schaefer <schaefer@zsh.org>2023-09-16 20:51:27 -0700
commit1becbba0b614c9ef17ba28aa51c4e8e7d21f1e0f (patch)
tree96a6d596b51ef4917ea24b9fd6214cd360831c9a /Src/subst.c
parentf72757ccf30610fe8fdd1ed76d080971f767edaf (diff)
downloadzsh-1becbba0b614c9ef17ba28aa51c4e8e7d21f1e0f.tar.gz
zsh-1becbba0b614c9ef17ba28aa51c4e8e7d21f1e0f.tar.xz
zsh-1becbba0b614c9ef17ba28aa51c4e8e7d21f1e0f.zip
users/29160, workers/52156: Fix repetition of substitution modifier.
Diffstat (limited to 'Src/subst.c')
-rw-r--r--Src/subst.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Src/subst.c b/Src/subst.c
index 52afd6484..dc2052ee0 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -4689,7 +4689,8 @@ modify(char **str, char **ptr, int inbrace)
 		    case 'S':
 			hsubpatopt = (c == 'S');
 			if (hsubl && hsubr)
-			    subst(&copy, hsubl, hsubr, gbal, hsubpatopt);
+			    subst(&copy, dupstring(hsubl), dupstring(hsubr),
+				  gbal, hsubpatopt);
 			break;
 		    case 'q':
 			copy = quotestring(copy, QT_BACKSLASH_SHOWNULL);
@@ -4777,7 +4778,8 @@ modify(char **str, char **ptr, int inbrace)
 		case 'S':
 		    hsubpatopt = (c == 'S');
 		    if (hsubl && hsubr)
-			subst(str, hsubl, hsubr, gbal, hsubpatopt);
+			subst(str, dupstring(hsubl), dupstring(hsubr),
+			      gbal, hsubpatopt);
 		    break;
 		case 'q':
 		    *str = quotestring(*str, QT_BACKSLASH);