Add the 'bool' type and its values 'False' and 'True', as described in
PEP 285. Everything described in the PEP is here, and there is even
some documentation. I had to fix 12 unit tests; all but one of these
were printing Boolean outcomes that changed from 0/1 to False/True.
(The exception is test_unicode.py, which did a type(x) == type(y)
style comparison. I could've fixed that with a single line using
issubtype(x, type(y)), but instead chose to be explicit about those
places where a bool is expected.
Still to do: perhaps more documentation; change standard library
modules to return False/True from predicates.
diff --git a/Include/object.h b/Include/object.h
index 347f9c4..a85905f 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -531,8 +531,8 @@
#define Py_DECREF(op) \
if (--_Py_RefTotal, 0 < (--((op)->ob_refcnt))) ; \
else if (0 == (op)->ob_refcnt) _Py_Dealloc( (PyObject*)(op)); \
- else (void)fprintf( stderr, "%s:%i negative ref count %i\n", \
- __FILE__, __LINE__, (op)->ob_refcnt)
+ else ((void)fprintf( stderr, "%s:%i negative ref count %i\n", \
+ __FILE__, __LINE__, (op)->ob_refcnt), abort())
#else /* !Py_REF_DEBUG */
#ifdef COUNT_ALLOCS