diff options
-rw-r--r-- | shell/hush.c | 5 | ||||
-rw-r--r-- | shell/hush_test/hush-misc/func4.right | 2 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/func4.tests | 7 | ||||
-rwxr-xr-x | shell/hush_test/hush-z_slow/leak_all1.tests | 2 |
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 @@ | |||
1 | 24 | ||
2 | Done | ||
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 @@ | |||
1 | func() { | ||
2 | eval "echo \"\${val_${1}}\"" | ||
3 | } | ||
4 | |||
5 | val_x=24 | ||
6 | (func x) | ||
7 | echo 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++)) |
69 | done | 69 | done |
70 | unset i l t | ||
70 | unset -f f | 71 | unset -f f |
71 | 72 | ||
72 | memleak | 73 | memleak |
@@ -134,6 +135,7 @@ HERE | |||
134 | f >/dev/null | 135 | f >/dev/null |
135 | : $((i++)) | 136 | : $((i++)) |
136 | done | 137 | done |
138 | unset i l t | ||
137 | unset -f f | 139 | unset -f f |
138 | 140 | ||
139 | 141 | ||