data-out: Reorganize output_Z() to be more easily understood.
authorBen Pfaff <blp@cs.stanford.edu>
Thu, 17 Feb 2011 05:42:13 +0000 (21:42 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 20 Feb 2011 01:33:28 +0000 (17:33 -0800)
It took me a minute to figure out what was going on here, so this commit
slightly reorganizes it.

src/data/data-out.c

index bb774374d476cbc7b6c04aa0db60c7ecc452fc04..1ed83bcbc9b3f1221634600ae89c30505fee3cda 100644 (file)
@@ -215,11 +215,9 @@ output_Z (const union value *input, const struct fmt_spec *format,
   char buf[128];
   if (input->f == SYSMIS)
     output_missing (format, output);
-  else if (fabs (number) >= power10 (format->w)
-           || sprintf (buf, "%0*.0f", format->w,
-                       fabs (round (number))) != format->w)
-    output_overflow (format, output);
-  else
+  else if (fabs (number) < power10 (format->w)
+           && sprintf (buf, "%0*.0f", format->w,
+                       fabs (round (number))) == format->w)
     {
       if (number < 0 && strspn (buf, "0") < format->w)
         {
@@ -229,6 +227,8 @@ output_Z (const union value *input, const struct fmt_spec *format,
       memcpy (output, buf, format->w);
       output[format->w] = '\0';
     }
+  else
+    output_overflow (format, output);
 }
 
 /* Outputs P format. */