summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_bool.py6
-rw-r--r--Objects/stringobject.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index 7a9022e..bbaea85 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -163,6 +163,12 @@ class BoolTest(unittest.TestCase):
self.assertIs(bool(""), False)
self.assertIs(bool(), False)
+ def test_format(self):
+ self.assertEqual("%d" % False, "0")
+ self.assertEqual("%d" % True, "1")
+ self.assertEqual("%x" % False, "0")
+ self.assertEqual("%x" % True, "1")
+
def test_hasattr(self):
self.assertIs(hasattr([], "append"), True)
self.assertIs(hasattr([], "wobble"), False)
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 7a35974..b1d711d 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -4144,11 +4144,14 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type,
return NULL;
}
-
switch (type) {
case 'd':
case 'u':
- result = Py_Type(val)->tp_str(val);
+ /* Special-case boolean: we want 0/1 */
+ if (PyBool_Check(val))
+ result = PyNumber_ToBase(val, 10);
+ else
+ result = Py_Type(val)->tp_str(val);
break;
case 'o':
numnondigits = 2;