As Neal pointed out, bool_print was an order of magnitude too complex.
diff --git a/Objects/boolobject.c b/Objects/boolobject.c
index fc5c4ca..3953af6 100644
--- a/Objects/boolobject.c
+++ b/Objects/boolobject.c
@@ -7,18 +7,7 @@
static int
bool_print(PyBoolObject *self, FILE *fp, int flags)
{
- if (flags & Py_PRINT_RAW) {
- if (self->ob_ival == 0)
- fputs("False", fp);
- else
- fputs("True", fp);
- }
- else {
- if (self->ob_ival == 0)
- fputs("False", fp);
- else
- fputs("True", fp);
- }
+ fputs(self->ob_ival == 0 ? "False" : "True", fp);
return 0;
}