summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2009-07-27 02:12:11 (GMT)
committerEric Smith <eric@trueblade.com>2009-07-27 02:12:11 (GMT)
commit7bc66b10099552dae79fab232ea643296e10876e (patch)
tree366aa624fa9af3f767478da4aa43571b32b31683 /Objects
parente54b21928c67150096a245547864f1526c829dd4 (diff)
downloadcpython-7bc66b10099552dae79fab232ea643296e10876e.zip
cpython-7bc66b10099552dae79fab232ea643296e10876e.tar.gz
cpython-7bc66b10099552dae79fab232ea643296e10876e.tar.bz2
Merged revisions 74222 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r74222 | eric.smith | 2009-07-26 22:10:42 -0400 (Sun, 26 Jul 2009) | 1 line Sync trunk and py3k versions of string formatting. Manual merge of r74219. ........
Diffstat (limited to 'Objects')
-rw-r--r--Objects/stringlib/formatter.h25
1 files changed, 16 insertions, 9 deletions
diff --git a/Objects/stringlib/formatter.h b/Objects/stringlib/formatter.h
index ea15c7b..5cead66 100644
--- a/Objects/stringlib/formatter.h
+++ b/Objects/stringlib/formatter.h
@@ -920,6 +920,13 @@ format_float_internal(PyObject *value,
format the result. We take care of that later. */
type = 'g';
+#if PY_VERSION_HEX < 0x0301000
+ /* 'F' is the same as 'f', per the PEP */
+ /* This is no longer the case in 3.x */
+ if (type == 'F')
+ type = 'f';
+#endif
+
val = PyFloat_AsDouble(value);
if (val == -1.0 && PyErr_Occurred())
goto done;
@@ -935,15 +942,8 @@ format_float_internal(PyObject *value,
#if PY_VERSION_HEX < 0x03010000
/* 3.1 no longer converts large 'f' to 'g'. */
- if (fabs(val) >= 1e50)
- switch (type) {
- case 'f':
- type = 'g';
- break;
- case 'F':
- type = 'G';
- break;
- }
+ if ((type == 'f' || type == 'F') && fabs(val) >= 1e50)
+ type = 'g';
#endif
/* Cast "type", because if we're in unicode we need to pass a
@@ -1117,6 +1117,13 @@ format_complex_internal(PyObject *value,
format the result. We take care of that later. */
type = 'g';
+#if PY_VERSION_HEX < 0x03010000
+ /* This is no longer the case in 3.x */
+ /* 'F' is the same as 'f', per the PEP */
+ if (type == 'F')
+ type = 'f';
+#endif
+
if (precision < 0)
precision = default_precision;