diff options
author | Denys Vlasenko | 2018-04-05 00:51:55 +0200 |
---|---|---|
committer | Denys Vlasenko | 2018-04-05 00:51:55 +0200 |
commit | d358b0b65dae83d52e511a126757e2aa7b1881b2 (patch) | |
tree | 6ff6f7c14a399c0e5ff659b69080822a0e84cc83 /shell/hush_test | |
parent | 332e4115c978094b3630cde62a7154a4fcd564d8 (diff) | |
download | busybox-d358b0b65dae83d52e511a126757e2aa7b1881b2.zip busybox-d358b0b65dae83d52e511a126757e2aa7b1881b2.tar.gz |
hush: fix a bug where we don't properly handle f() { a=A; b=B; }; a= f
function old new delta
unset_local_var 20 274 +254
leave_var_nest_level - 98 +98
set_vars_and_save_old 128 164 +36
enter_var_nest_level - 32 +32
builtin_local 46 50 +4
pseudo_exec_argv 554 544 -10
redirect_and_varexp_helper 77 64 -13
run_pipe 1890 1641 -249
unset_local_var_len 267 - -267
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 3/3 up/down: 424/-539) Total: -115 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test')
-rw-r--r-- | shell/hush_test/hush-vars/var_nested1.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-vars/var_nested1.tests | 16 | ||||
-rw-r--r-- | shell/hush_test/hush-vars/var_nested2.right | 1 | ||||
-rwxr-xr-x | shell/hush_test/hush-vars/var_nested2.tests | 2 |
4 files changed, 22 insertions, 0 deletions
diff --git a/shell/hush_test/hush-vars/var_nested1.right b/shell/hush_test/hush-vars/var_nested1.right new file mode 100644 index 0000000..f4bc5f4 --- /dev/null +++ b/shell/hush_test/hush-vars/var_nested1.right @@ -0,0 +1,3 @@ +Expected:AB Actual:AB +Expected:Ab Actual:Ab +Expected:ab Actual:ab diff --git a/shell/hush_test/hush-vars/var_nested1.tests b/shell/hush_test/hush-vars/var_nested1.tests new file mode 100755 index 0000000..59e4a14 --- /dev/null +++ b/shell/hush_test/hush-vars/var_nested1.tests @@ -0,0 +1,16 @@ +f() { a=A; b=B; } + +a=a +b=b +f +echo Expected:AB Actual:$a$b + +a=a +b=b +b= f +echo Expected:Ab Actual:$a$b + +a=a +b=b +a= b= f +echo Expected:ab Actual:$a$b diff --git a/shell/hush_test/hush-vars/var_nested2.right b/shell/hush_test/hush-vars/var_nested2.right new file mode 100644 index 0000000..c930d97 --- /dev/null +++ b/shell/hush_test/hush-vars/var_nested2.right @@ -0,0 +1 @@ +aB diff --git a/shell/hush_test/hush-vars/var_nested2.tests b/shell/hush_test/hush-vars/var_nested2.tests new file mode 100755 index 0000000..e886586 --- /dev/null +++ b/shell/hush_test/hush-vars/var_nested2.tests @@ -0,0 +1,2 @@ +# the bug was easier to trigger in one-liner form +a=a; b=b; f() { a=A; b=B; }; a= f; echo $a$b |