From a7f4e4bbd8d7a47a49404d28bc07ab3b5dc1c19b Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Wed, 2 Apr 2008 20:24:09 +0000 Subject: 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 --- testsuite/expr/expr-big | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 testsuite/expr/expr-big (limited to 'testsuite/expr') 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 -- cgit v1.1