2008-04-30 Farid Zaripov <farid_zaripov@epam.com>
* tests/src/printf.cpp (__rw_fmtfloating): Process width and precision
specifiers before the size specifiers.
[_MSC_VER]: Decrement len after removing redundant zero.
git-svn-id: https://svn.apache.org/repos/asf/stdcxx/trunk@652396 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tests/src/printf.cpp b/tests/src/printf.cpp
index 872617f..7c23f8e 100644
--- a/tests/src/printf.cpp
+++ b/tests/src/printf.cpp
@@ -1424,6 +1424,13 @@
if (spec.fl_zero)
*pf++ = '0';
+ if (spec.mod != spec.mod_ext_A && 0 <= spec.width) {
+ pf += sprintf (pf, "%i", spec.width);
+ }
+
+ if (0 <= spec.prec)
+ pf += sprintf (pf, ".%i", spec.prec);
+
if (spec.mod == spec.mod_h)
*pf++ = 'h';
else if (spec.mod == spec.mod_hh) {
@@ -1451,13 +1458,6 @@
pf += strlen (pf);
}
- if (spec.mod != spec.mod_ext_A && 0 <= spec.width) {
- pf += sprintf (pf, "%i", spec.width);
- }
-
- if (0 <= spec.prec)
- pf += sprintf (pf, ".%i", spec.prec);
-
*pf++ = char (spec.cvtspec);
*pf = '\0';
@@ -1499,6 +1499,7 @@
buffer [len - 3] = buffer [len - 2];
buffer [len - 2] = buffer [len - 1];
buffer [len - 1] = buffer [len];
+ --len;
}
}