]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Remove code from div that is by C99 obsolete. Fixes bug 15799
authorOndřej Bílka <neleai@seznam.cz>
Wed, 30 Oct 2013 15:07:15 +0000 (16:07 +0100)
committerOndřej Bílka <neleai@seznam.cz>
Wed, 30 Oct 2013 15:08:12 +0000 (16:08 +0100)
ChangeLog
NEWS
stdlib/div.c
stdlib/ldiv.c
stdlib/lldiv.c

index b31973544cd617eebe04e6cb2968541a9919278b..07ea69da31b3b1bc32eb07e97245724dc8b5913a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
diff --git a/NEWS b/NEWS
index 87d183afb278ad0c8943123db660b642fd86855c..2c5873d3451a2b98ffe3445aed6aae96fb219155 100644 (file)
--- a/NEWS
+++ b/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
index 44a30a7ea485a9eef38fb4ffe6aaebdc06468b3b..0f5569a5dde3f77e8600f581235079fde0aa2c3b 100644 (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;
 }
index 76d474fc62b241f16536a2a08d10cfcb6ae66e3b..a03057fc0d7760d2e39ad84e1b66a880470ecb21 100644 (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;
 }
index d1202bf9f97ef27af2c5ba26d2476e3a1d6d8751..0da1a6afc1692658100a5692a5fc571aa5e2ede1 100644 (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;
 }