mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Remove code from div that is by C99 obsolete. Fixes bug 15799
This commit is contained in:
parent
977f4b31b7
commit
bbea82f7fe
@ -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
8
NEWS
@ -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
|
||||
|
22
stdlib/div.c
22
stdlib/div.c
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user