mirror of
https://github.com/postgres/postgres.git
synced 2025-07-11 10:01:57 +03:00
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
This commit is contained in:
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user