diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-10-12 11:14:27 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-10-12 11:14:27 -0400 |
commit | f1885386f6246ac7b6f8d3f0aef247988f48ee7a (patch) | |
tree | 7e99f69d756666ae870157f415f3bab4d3c4ad81 /src/port/snprintf.c | |
parent | b34e84f160a47d9070b304bfc1baf17596d71865 (diff) | |
download | postgresql-f1885386f6246ac7b6f8d3f0aef247988f48ee7a.tar.gz postgresql-f1885386f6246ac7b6f8d3f0aef247988f48ee7a.zip |
Make float exponent output on Windows look the same as elsewhere.
Windows, alone among our supported platforms, likes to emit three-digit
exponent fields even when two digits would do. Adjust such results to
look like the way everyone else does it. Eliminate a bunch of variant
expected-output files that were needed only because of this quirk.
Discussion: https://postgr.es/m/2934.1539122454@sss.pgh.pa.us
Diffstat (limited to 'src/port/snprintf.c')
-rw-r--r-- | src/port/snprintf.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/port/snprintf.c b/src/port/snprintf.c index 31438dded45..d1c201fd9d6 100644 --- a/src/port/snprintf.c +++ b/src/port/snprintf.c @@ -1181,6 +1181,22 @@ fmtfloat(double value, char type, int forcesign, int leftjust, } if (vallen < 0) goto fail; + + /* + * Windows, alone among our supported platforms, likes to emit + * three-digit exponent fields even when two digits would do. Hack + * such results to look like the way everyone else does it. + */ +#ifdef WIN32 + if (vallen >= 6 && + convert[vallen - 5] == 'e' && + convert[vallen - 3] == '0') + { + convert[vallen - 3] = convert[vallen - 2]; + convert[vallen - 2] = convert[vallen - 1]; + vallen--; + } +#endif } padlen = compute_padlen(minlen, vallen + zeropadlen, leftjust); @@ -1298,6 +1314,17 @@ pg_strfromd(char *str, size_t count, int precision, double value) target.failed = true; goto fail; } + +#ifdef WIN32 + if (vallen >= 6 && + convert[vallen - 5] == 'e' && + convert[vallen - 3] == '0') + { + convert[vallen - 3] = convert[vallen - 2]; + convert[vallen - 2] = convert[vallen - 1]; + vallen--; + } +#endif } } |