diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2016-10-01 22:28:03 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-10-01 22:28:03 +0200 |
| commit | 04b46bced991f802a17c0fc43c8f8448e4eb2c8f (patch) | |
| tree | fa9f4f151950d21aca3bbf9a3c4bfa01853976cc /shell/hush_test | |
| parent | 0dd8e45d42a420a570e7cada80a5fb1ef2052054 (diff) | |
| download | busybox-w32-04b46bced991f802a17c0fc43c8f8448e4eb2c8f.tar.gz busybox-w32-04b46bced991f802a17c0fc43c8f8448e4eb2c8f.tar.bz2 busybox-w32-04b46bced991f802a17c0fc43c8f8448e4eb2c8f.zip | |
hush: 'return' should have effect earlier
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
| -rw-r--r-- | shell/hush_test/hush-trap/return_in_trap1.right | 4 | ||||
| -rwxr-xr-x | shell/hush_test/hush-trap/return_in_trap1.tests | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/shell/hush_test/hush-trap/return_in_trap1.right b/shell/hush_test/hush-trap/return_in_trap1.right new file mode 100644 index 000000000..a6e637885 --- /dev/null +++ b/shell/hush_test/hush-trap/return_in_trap1.right | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | a:2 | ||
| 2 | b:0 | ||
| 3 | Trap | ||
| 4 | d:3 | ||
diff --git a/shell/hush_test/hush-trap/return_in_trap1.tests b/shell/hush_test/hush-trap/return_in_trap1.tests new file mode 100755 index 000000000..f2498024f --- /dev/null +++ b/shell/hush_test/hush-trap/return_in_trap1.tests | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | a() { | ||
| 2 | (exit 2) | ||
| 3 | echo a:$? | ||
| 4 | (kill -s USR1 $$; echo b:$?; exit 3) | ||
| 5 | echo c:$? # does not execute | ||
| 6 | (exit 4) | ||
| 7 | } | ||
| 8 | |||
| 9 | trap "echo Trap; return" USR1 | ||
| 10 | a | ||
| 11 | |||
| 12 | echo d:$? | ||
| 13 | # It's debatable what is the correct value above. | ||
| 14 | # Does 'return' in trap sees $? == 2 or $? == 3? | ||
| 15 | # IOW: after (kill..), does shell first wait for its completion | ||
| 16 | # and sets $?, then checks pending signals and runs a trap handler, | ||
| 17 | # or does it first checks pending signals and runs handler? | ||
| 18 | # hush does the former, and prints 3. | ||
