mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +08:00
stdlib: Avoid undefined behavior in stdlib/tst-labs
The last loop could attempt to overflow beyond INT_MAX on 32-bit architectures. Also switch to GNU style. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
This commit is contained in:
parent
8812b9900e
commit
10a81dd4cf
@ -25,25 +25,26 @@
|
||||
|
||||
static int do_test (void)
|
||||
{
|
||||
long i;
|
||||
long int i;
|
||||
|
||||
TEST_COMPARE(labs(LONG_MAX), LONG_MAX);
|
||||
TEST_COMPARE(labs(LONG_MIN + 1), LONG_MAX);
|
||||
TEST_COMPARE(labs(-1), 1);
|
||||
TEST_COMPARE(labs(0), 0);
|
||||
TEST_COMPARE(labs(1), 1);
|
||||
TEST_COMPARE (labs (LONG_MAX), LONG_MAX);
|
||||
TEST_COMPARE (labs (LONG_MIN + 1), LONG_MAX);
|
||||
TEST_COMPARE (labs (-1), 1);
|
||||
TEST_COMPARE (labs (0), 0);
|
||||
TEST_COMPARE (labs (1), 1);
|
||||
|
||||
for (i = LONG_MIN + 1; i < LONG_MIN + INT_MAX; i += LARGE_PRIME)
|
||||
TEST_COMPARE(labs(i), -i);
|
||||
TEST_COMPARE (labs (i), -i);
|
||||
|
||||
for (i = LONG_MAX - INT_MAX; i < LONG_MAX - LARGE_PRIME; i += LARGE_PRIME)
|
||||
TEST_COMPARE(labs(i), i);
|
||||
for (i = LONG_MAX - INT_MAX; i < LONG_MAX - LARGE_PRIME;
|
||||
i += LARGE_PRIME)
|
||||
TEST_COMPARE (labs (i), i);
|
||||
|
||||
for (i = INT_MIN + 1; i < 0; i += LARGE_PRIME)
|
||||
TEST_COMPARE(labs(i), -i);
|
||||
TEST_COMPARE (labs (i), -i);
|
||||
|
||||
for (i = 0; i < INT_MAX; i += LARGE_PRIME)
|
||||
TEST_COMPARE(labs(i), i);
|
||||
for (i = 0; i <= INT_MAX - LARGE_PRIME; i += LARGE_PRIME)
|
||||
TEST_COMPARE (labs (i), i);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user