diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-04-26 20:06:14 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-04-26 20:06:14 +0000 |
| commit | 572930027d5d86a18ebd68d5f4273150a2f302e1 (patch) | |
| tree | 67f35d015b39c678bc3d2e271c956b6e356fa0d4 | |
| parent | 5b7589eb27e748a3d281c0341219cf7435e8b4f1 (diff) | |
| download | busybox-w32-572930027d5d86a18ebd68d5f4273150a2f302e1.tar.gz busybox-w32-572930027d5d86a18ebd68d5f4273150a2f302e1.tar.bz2 busybox-w32-572930027d5d86a18ebd68d5f4273150a2f302e1.zip | |
hush: nommu fix for function passing
| -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 | ||
