+@@ -1178,7 +1598,7 @@
+ if (expt <= 0) {
+ PRINT(zeroes, 1);
+ if (prec || flags & ALT)
+- PRINT(decimal_point, 1);
++ PRINT(decimal_point, strlen(decimal_point));
+ PAD(-expt, zeroes);
+ /* already handled initial 0's */
+ prec += expt;
+@@ -1203,14 +1623,14 @@
+ cp = dtoaend;
+ }
+ if (prec || flags & ALT)
+- PRINT(decimal_point,1);
++ PRINT(decimal_point, strlen(decimal_point));
+ }
+ PRINTANDPAD(cp, dtoaend, prec, zeroes);
+ } else { /* %[eE] or sufficiently long %[gG] */
+ if (prec > 1 || flags & ALT) {
+ buf[0] = *cp++;
+- buf[1] = *decimal_point;
+- PRINT(buf, 2);
++ PRINT(buf, 1);
++ PRINT(decimal_point, strlen(decimal_point));
+ PRINT(cp, ndig-1);
+ PAD(prec - ndig, zeroes);
+ } else /* XeYYY */
+@@ -1406,6 +1826,11 @@