busybox/testsuite/expr/expr-big
Denis Vlasenko a7f4e4bbd8 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
2008-04-02 20:24:09 +00:00

17 lines
458 B
Plaintext

# 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