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
This commit is contained in:
16
testsuite/expr/expr-big
Normal file
16
testsuite/expr/expr-big
Normal file
@@ -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
|
Reference in New Issue
Block a user