Loading...
gdtoa/FreeBSD/_hdtoa.c.patch Libc-498 /dev/null
--- Libc/Libc-498/gdtoa/FreeBSD/_hdtoa.c.patch
+++ /dev/null
@@ -1,69 +0,0 @@
---- _hdtoa.c.orig	2006-08-14 16:12:46.000000000 -0700
-+++ _hdtoa.c	2006-08-14 23:02:39.000000000 -0700
-@@ -55,7 +55,7 @@
- 			*s = 1;
- 			return (1);
- 		}
--		++*s;
-+		*s = 0;
- 	}
- 	++*s;
- 	return (0);
-@@ -223,12 +223,17 @@
- 	union IEEEl2bits u;
- 	char *s, *s0;
- 	int bufsize;
-+#ifdef LDBL_HEAD_TAIL_PAIR
-+	uint32_t bits[4];
-+	int i, pos;
-+#endif /* LDBL_HEAD_TAIL_PAIR */
- 
- 	u.e = e;
- 	*sign = u.bits.sign;
- 
- 	switch (fpclassify(e)) {
- 	case FP_NORMAL:
-+	case FP_SUPERNORMAL:
- 		*decpt = u.bits.exp - LDBL_ADJ;
- 		break;
- 	case FP_ZERO:
-@@ -270,6 +275,19 @@
- 	 */
- 	for (s = s0 + bufsize - 1; s > s0 + sigfigs - 1; s--)
- 		*s = 0;
-+#ifdef LDBL_HEAD_TAIL_PAIR
-+	_ldbl2array32dd(u, bits);
-+	i = 0;
-+	pos = 8;
-+	for (; s > s0; s--) {
-+		*s = bits[i] & 0xf;
-+		bits[i] >>= 4;
-+		if (--pos <= 0) {
-+			i++;
-+			pos = 8;
-+		}
-+	}
-+#else /* LDBL_HEAD_TAIL_PAIR */
- 	for (; s > s0 + sigfigs - (LDBL_MANL_SIZE / 4) - 1 && s > s0; s--) {
- 		*s = u.bits.manl & 0xf;
- 		u.bits.manl >>= 4;
-@@ -278,6 +296,7 @@
- 		*s = u.bits.manh & 0xf;
- 		u.bits.manh >>= 4;
- 	}
-+#endif /* LDBL_HEAD_TAIL_PAIR */
- 
- 	/*
- 	 * At this point, we have snarfed all the bits in the
-@@ -285,7 +304,11 @@
- 	 * (partial) nibble, which is dealt with by the next
- 	 * statement.  We also tack on the implicit normalization bit.
- 	 */
-+#ifdef LDBL_HEAD_TAIL_PAIR
-+	*s = bits[i];
-+#else /* LDBL_HEAD_TAIL_PAIR */
- 	*s = u.bits.manh | (1U << ((LDBL_MANT_DIG - 1) % 4));
-+#endif /* LDBL_HEAD_TAIL_PAIR */
- 
- 	/* If ndigits < 0, we are expected to auto-size the precision. */
- 	if (ndigits < 0) {