Remove code from div that is by C99 obsolete. Fixes bug 15799

This commit is contained in:
Ondřej Bílka 2013-10-30 16:07:15 +01:00
parent 977f4b31b7
commit bbea82f7fe
5 changed files with 11 additions and 70 deletions

View File

@ -1,3 +1,10 @@
2013-10-30 Ondřej Bílka <neleai@seznam.cz>
[BZ 15799]
* stdlib/div.c (div): Remove obsolete code.
* stdlib/ldiv.c (ldiv): Likewise.
* stdlib/lldiv.c (lldiv): Likewise.
2013-10-30 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #16071]

8
NEWS
View File

@ -13,10 +13,10 @@ Version 2.19
14547, 14699, 14876, 14910, 15048, 15218, 15277, 15308, 15362, 15400,
15427, 15522, 15531, 15532, 15608, 15609, 15610, 15632, 15640, 15670,
15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754,
15760, 15764, 15797, 15825, 15844, 15847, 15849, 15855, 15856, 15857,
15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895, 15897, 15905,
15909, 15919, 15921, 15923, 15939, 15948, 15963, 15966, 15988, 16032,
16034, 16036, 16041, 16071, 16072, 16074, 16078.
15760, 15764, 15797, 15799, 15825, 15844, 15847, 15849, 15855, 15856,
15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895, 15897,
15905, 15909, 15919, 15921, 15923, 15939, 15948, 15963, 15966, 15988,
16032, 16034, 16036, 16041, 16071, 16072, 16074, 16078.
* CVE-2012-4412 The strcoll implementation caches indices and rules for
large collation sequences to optimize multiple passes. This cache

View File

@ -59,27 +59,5 @@ div (numer, denom)
result.quot = numer / denom;
result.rem = numer % denom;
/* The ANSI standard says that |QUOT| <= |NUMER / DENOM|, where
NUMER / DENOM is to be computed in infinite precision. In
other words, we should always truncate the quotient towards
zero, never -infinity. Machine division and remainer may
work either way when one or both of NUMER or DENOM is
negative. If only one is negative and QUOT has been
truncated towards -infinity, REM will have the same sign as
DENOM and the opposite sign of NUMER; if both are negative
and QUOT has been truncated towards -infinity, REM will be
positive (will have the opposite sign of NUMER). These are
considered `wrong'. If both are NUM and DENOM are positive,
RESULT will always be positive. This all boils down to: if
NUMER >= 0, but REM < 0, we got the wrong answer. In that
case, to get the right answer, add 1 to QUOT and subtract
DENOM from REM. */
if (numer >= 0 && result.rem < 0)
{
++result.quot;
result.rem -= denom;
}
return result;
}

View File

@ -27,27 +27,5 @@ ldiv (long int numer, long int denom)
result.quot = numer / denom;
result.rem = numer % denom;
/* The ANSI standard says that |QUOT| <= |NUMER / DENOM|, where
NUMER / DENOM is to be computed in infinite precision. In
other words, we should always truncate the quotient towards
zero, never -infinity. Machine division and remainer may
work either way when one or both of NUMER or DENOM is
negative. If only one is negative and QUOT has been
truncated towards -infinity, REM will have the same sign as
DENOM and the opposite sign of NUMER; if both are negative
and QUOT has been truncated towards -infinity, REM will be
positive (will have the opposite sign of NUMER). These are
considered `wrong'. If both are NUM and DENOM are positive,
RESULT will always be positive. This all boils down to: if
NUMER >= 0, but REM < 0, we got the wrong answer. In that
case, to get the right answer, add 1 to QUOT and subtract
DENOM from REM. */
if (numer >= 0 && result.rem < 0)
{
++result.quot;
result.rem -= denom;
}
return result;
}

View File

@ -30,27 +30,5 @@ lldiv (numer, denom)
result.quot = numer / denom;
result.rem = numer % denom;
/* The ANSI standard says that |QUOT| <= |NUMER / DENOM|, where
NUMER / DENOM is to be computed in infinite precision. In
other words, we should always truncate the quotient towards
zero, never -infinity. Machine division and remainer may
work either way when one or both of NUMER or DENOM is
negative. If only one is negative and QUOT has been
truncated towards -infinity, REM will have the same sign as
DENOM and the opposite sign of NUMER; if both are negative
and QUOT has been truncated towards -infinity, REM will be
positive (will have the opposite sign of NUMER). These are
considered `wrong'. If both are NUM and DENOM are positive,
RESULT will always be positive. This all boils down to: if
NUMER >= 0, but REM < 0, we got the wrong answer. In that
case, to get the right answer, add 1 to QUOT and subtract
DENOM from REM. */
if (numer >= 0 && result.rem < 0)
{
++result.quot;
result.rem -= denom;
}
return result;
}