Reworked very long string support for better encapsulation.
[pspp] / src / data / data-out.c
index 79c7042446abb453c2c1722b118303805dd5b217..53d9850db88a0da0ffb9ac3c1a76ada0d097955b 100644 (file)
@@ -36,8 +36,6 @@
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
-
-#include <libpspp/debug-print.h>
 \f
 /* Public functions. */
 
@@ -397,7 +395,7 @@ convert_Z (char *dst, const struct fmt_spec *fp, double number)
 static int
 convert_A (char *dst, const struct fmt_spec *fp, const char *string)
 {
-  memcpy (dst, string, fp->w);
+  memcpy(dst, string, fp->w);
   return 1;
 }
 
@@ -1065,6 +1063,7 @@ try_F (char *dst, const struct fmt_spec *fp, double number)
                  avoids wasting too much time formatting more
                  decimal places on the first try. */
               int result = format_and_round (dst, number, fp, fp->d + 2);
+
               if (result >= 0)
                 return result;
 
@@ -1145,7 +1144,7 @@ format_and_round (char *dst, double number, const struct fmt_spec *fp,
          digits of the fraction.
          Right-justify the integer part and sign. */
       dst[0] = ' ';
-      memcpy (dst + 1, buf, fp->w);
+      memcpy (dst + 1, buf, fp->w - 1);
       return 1;
     }