summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorDenis Vlasenko2008-04-02 20:24:09 +0000
committerDenis Vlasenko2008-04-02 20:24:09 +0000
commita7f4e4bbd8d7a47a49404d28bc07ab3b5dc1c19b (patch)
tree3ec79d4f425e7a5977cb54d0bf83e3eb615fa786 /testsuite
parent2e4c3c4cc3c2f6bdd3bfbafe9980f46b24971009 (diff)
downloadbusybox-a7f4e4bbd8d7a47a49404d28bc07ab3b5dc1c19b.zip
busybox-a7f4e4bbd8d7a47a49404d28bc07ab3b5dc1c19b.tar.gz
expr: fix comparisons 'a < b' where we were overflowing a-b
(not to mention that we used int, not arith_t). closes bug 2744. Also, shrink a bit and add testsuite entry function old new delta nextarg 75 84 +9 tostring 38 35 -3 toarith 89 86 -3 str_value 35 32 -3 eval6 555 552 -3 int_value 29 23 -6 eval4 128 120 -8 eval3 112 104 -8 eval2 512 417 -95 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/8 up/down: 9/-129) Total: -120 bytes
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/expr/expr-big16
1 files changed, 16 insertions, 0 deletions
diff --git a/testsuite/expr/expr-big b/testsuite/expr/expr-big
new file mode 100644
index 0000000..23dbbb3
--- /dev/null
+++ b/testsuite/expr/expr-big
@@ -0,0 +1,16 @@
+# busybox expr
+
+# 3*1000*1000*1000 overflows 32-bit signed int
+res=`busybox expr 0 '<' 3000000000`
+[ x"$res" = x1 ] || exit 1
+
+# 9223372036854775807 = 2^31-1
+res=`busybox expr 0 '<' 9223372036854775807`
+[ x"$res" = x1 ] || exit 1
+# coreutils fails this one!
+res=`busybox expr -9223372036854775800 '<' 9223372036854775807`
+[ x"$res" = x1 ] || exit 1
+
+# This one works only by chance
+# res=`busybox expr 0 '<' 9223372036854775808`
+# [ x"$res" = x1 ] || exit 1