- /* Infinity or NaN, assume buffer is at least ndigit long. */
- strlcpy(buf, digits, ndigit + 1);
+ /*
+ * Infinity or NaN, convert to inf or nan with sign.
+ * We assume the buffer is at least ndigit long.
+ */
+ snprintf(buf, ndigit + 1, "%s%s", sign ? "-" : "",
+ *digits == 'I' ? "inf" : "nan");
+ __freedtoa(digits);