summary refs log tree commit diff
diff options
context:
space:
mode:
authorOndřej Bílka <neleai@seznam.cz>2013-10-30 16:07:15 +0100
committerOndřej Bílka <neleai@seznam.cz>2013-10-30 16:08:12 +0100
commitbbea82f7fe8af40fd08e8956e1aaf4d877168652 (patch)
treea10c1817228461fb3cd672a10754a78d6783e821
parent977f4b31b7ca4a4e498c397f3fd70510694bbd86 (diff)
downloadglibc-bbea82f7fe8af40fd08e8956e1aaf4d877168652.tar.gz
glibc-bbea82f7fe8af40fd08e8956e1aaf4d877168652.tar.xz
glibc-bbea82f7fe8af40fd08e8956e1aaf4d877168652.zip
Remove code from div that is by C99 obsolete. Fixes bug 15799
-rw-r--r--ChangeLog7
-rw-r--r--NEWS8
-rw-r--r--stdlib/div.c22
-rw-r--r--stdlib/ldiv.c22
-rw-r--r--stdlib/lldiv.c22
5 files changed, 11 insertions, 70 deletions
diff --git a/ChangeLog b/ChangeLog
index b31973544c..07ea69da31 100644
--- 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 87d183afb2..2c5873d345 100644
--- 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
diff --git a/stdlib/div.c b/stdlib/div.c
index 44a30a7ea4..0f5569a5dd 100644
--- a/stdlib/div.c
+++ b/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;
 }
diff --git a/stdlib/ldiv.c b/stdlib/ldiv.c
index 76d474fc62..a03057fc0d 100644
--- a/stdlib/ldiv.c
+++ b/stdlib/ldiv.c
@@ -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;
 }
diff --git a/stdlib/lldiv.c b/stdlib/lldiv.c
index d1202bf9f9..0da1a6afc1 100644
--- a/stdlib/lldiv.c
+++ b/stdlib/lldiv.c
@@ -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;
 }