about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--manual/nss.texi2
-rw-r--r--stdio-common/_itoa.c83
3 files changed, 47 insertions, 41 deletions
diff --git a/ChangeLog b/ChangeLog
index 0f4ac9859a..c82015c406 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 1999-05-05  Ulrich Drepper  <drepper@cygnus.com>
 
+	* stdio-common/_itoa.c (_itoa): Fix special 32bit platform case
+	with specific bases and only few bits set in second word.
+
 	* timezone/Makefile (install-others): Create target directory
 	before creating tzfiles.
 
diff --git a/manual/nss.texi b/manual/nss.texi
index dd8aa9e210..e3ff131875 100644
--- a/manual/nss.texi
+++ b/manual/nss.texi
@@ -226,7 +226,7 @@ value for the actions are normally what you want, and only need to be
 changed in exceptional cases.
 
 If the optional @code{!} is placed before the @var{status} this means
-the following action is used for all statii but @var{status} itself.
+the following action is used for all statuses but @var{status} itself.
 I.e., @code{!} is negation as in the C language (and others).
 
 Before we explain the exception which makes this action item necessary
diff --git a/stdio-common/_itoa.c b/stdio-common/_itoa.c
index af4836036f..3a7cd78003 100644
--- a/stdio-common/_itoa.c
+++ b/stdio-common/_itoa.c
@@ -175,46 +175,49 @@ _itoa (value, buflim, base, upper_case)
 
   switch (base)
     {
-#define RUN_2N(BITS)							  \
-      do								  \
-        {								  \
-	  /* `unsigned long long int' always has 64 bits.  */		  \
-	  mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB);		  \
-									  \
-	  if (BITS_PER_MP_LIMB == 32)					  \
-	    {								  \
-	      if (work_hi != 0)						  \
-		{							  \
-		  mp_limb_t work_lo;					  \
-		  int cnt;						  \
-									  \
-		  work_lo = value & 0xfffffffful;			  \
-		  for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt)	  \
-		    {							  \
-		      *--bp = digits[work_lo & ((1ul << BITS) - 1)];	  \
-		      work_lo >>= BITS;					  \
-		    }							  \
-		  if (BITS_PER_MP_LIMB % BITS != 0)			  \
-		    {							  \
-		      work_lo						  \
-			|= ((work_hi					  \
-			     & ((1 << (BITS - BITS_PER_MP_LIMB%BITS))	  \
-				- 1))					  \
-			    << BITS_PER_MP_LIMB % BITS);		  \
-		      *--bp = digits[work_lo];				  \
-		      work_hi >>= BITS - BITS_PER_MP_LIMB % BITS;	  \
-		    }							  \
-		}							  \
-	      else							  \
-		work_hi = value & 0xfffffffful;				  \
-	    }								  \
-	  do								  \
-	    {								  \
-	      *--bp = digits[work_hi & ((1 << BITS) - 1)];		  \
-	      work_hi >>= BITS;						  \
-	    }								  \
-	  while (work_hi != 0);						  \
-	}								  \
+#define RUN_2N(BITS) \
+      do								      \
+        {								      \
+	  /* `unsigned long long int' always has 64 bits.  */		      \
+	  mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB);		      \
+									      \
+	  if (BITS_PER_MP_LIMB == 32)					      \
+	    {								      \
+	      if (work_hi != 0)						      \
+		{							      \
+		  mp_limb_t work_lo;					      \
+		  int cnt;						      \
+									      \
+		  work_lo = value & 0xfffffffful;			      \
+		  for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt)	      \
+		    {							      \
+		      *--bp = digits[work_lo & ((1ul << BITS) - 1)];	      \
+		      work_lo >>= BITS;					      \
+		    }							      \
+		  if (BITS_PER_MP_LIMB % BITS != 0)			      \
+		    {							      \
+		      work_lo						      \
+			|= ((work_hi					      \
+			     & ((1 << (BITS - BITS_PER_MP_LIMB%BITS))	      \
+				- 1))					      \
+			    << BITS_PER_MP_LIMB % BITS);		      \
+		      work_hi >>= BITS - BITS_PER_MP_LIMB % BITS;	      \
+		      if (work_hi == 0)					      \
+			work_hi = work_lo;				      \
+		      else						      \
+			*--bp = digits[work_lo];			      \
+		    }							      \
+		}							      \
+	      else							      \
+		work_hi = value & 0xfffffffful;				      \
+	    }								      \
+	  do								      \
+	    {								      \
+	      *--bp = digits[work_hi & ((1 << BITS) - 1)];		      \
+	      work_hi >>= BITS;						      \
+	    }								      \
+	  while (work_hi != 0);						      \
+	}								      \
       while (0)
     case 8:
       RUN_2N (3);