aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/hush.c5
-rw-r--r--shell/hush_test/hush-misc/func4.right2
-rwxr-xr-xshell/hush_test/hush-misc/func4.tests7
-rwxr-xr-xshell/hush_test/hush-z_slow/leak_all1.tests2
4 files changed, 15 insertions, 1 deletions
diff --git a/shell/hush.c b/shell/hush.c
index 2ad8ebacb..292b8b2e3 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -5328,9 +5328,12 @@ static int parse_stream_dquoted(o_string *as_string,
5328 * within double quotes by preceding it with a backslash. 5328 * within double quotes by preceding it with a backslash.
5329 */ 5329 */
5330 if (strchr("$`\"\\", next) != NULL) { 5330 if (strchr("$`\"\\", next) != NULL) {
5331 o_addqchr(dest, i_getch(input)); 5331 ch = i_getch(input);
5332 o_addqchr(dest, ch);
5333 nommu_addchr(as_string, ch);
5332 } else { 5334 } else {
5333 o_addqchr(dest, '\\'); 5335 o_addqchr(dest, '\\');
5336 nommu_addchr(as_string, '\\');
5334 } 5337 }
5335 goto again; 5338 goto again;
5336 } 5339 }
diff --git a/shell/hush_test/hush-misc/func4.right b/shell/hush_test/hush-misc/func4.right
new file mode 100644
index 000000000..0c87e316a
--- /dev/null
+++ b/shell/hush_test/hush-misc/func4.right
@@ -0,0 +1,2 @@
124
2Done
diff --git a/shell/hush_test/hush-misc/func4.tests b/shell/hush_test/hush-misc/func4.tests
new file mode 100755
index 000000000..db3f15abf
--- /dev/null
+++ b/shell/hush_test/hush-misc/func4.tests
@@ -0,0 +1,7 @@
1func() {
2 eval "echo \"\${val_${1}}\""
3}
4
5val_x=24
6(func x)
7echo Done
diff --git a/shell/hush_test/hush-z_slow/leak_all1.tests b/shell/hush_test/hush-z_slow/leak_all1.tests
index 17ce0c6fa..4e3c4fdec 100755
--- a/shell/hush_test/hush-z_slow/leak_all1.tests
+++ b/shell/hush_test/hush-z_slow/leak_all1.tests
@@ -67,6 +67,7 @@ HERE
67 f >/dev/null 67 f >/dev/null
68 : $((i++)) 68 : $((i++))
69done 69done
70unset i l t
70unset -f f 71unset -f f
71 72
72memleak 73memleak
@@ -134,6 +135,7 @@ HERE
134 f >/dev/null 135 f >/dev/null
135 : $((i++)) 136 : $((i++))
136done 137done
138unset i l t
137unset -f f 139unset -f f
138 140
139 141