From ad88bdee0c382b9f1cbbb2d76cc739afb2790a60 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Mon, 18 May 2015 09:56:16 +0200 Subject: ash: remove arithmetic expansion collapsing at parse time Collapsing arithmetic expansion is incorrect when the inner arithmetic expansion is a part of a parameter expansion. Test case: unset a echo $((3 + ${a:=$((4 + 5))})) echo $a Old result: 12 (4 + 5) New result: 12 9 Based on commit bb777a6 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu function old new delta readtoken1 3180 3163 -17 Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- .../var-do-not-collapse-arithmetic-expansion-at-parse-time.right | 2 ++ .../var-do-not-collapse-arithmetic-expansion-at-parse-time.tests | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.right create mode 100755 shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.tests (limited to 'shell/ash_test') diff --git a/shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.right b/shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.right new file mode 100644 index 000000000..81a15855c --- /dev/null +++ b/shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.right @@ -0,0 +1,2 @@ +12 +9 diff --git a/shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.tests b/shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.tests new file mode 100755 index 000000000..e97a08a57 --- /dev/null +++ b/shell/ash_test/ash-vars/var-do-not-collapse-arithmetic-expansion-at-parse-time.tests @@ -0,0 +1,3 @@ +unset a +echo $((3 + ${a:=$((4 + 5))})) +echo $a -- cgit v1.2.3