summaryrefslogtreecommitdiffstats
path: root/Include/cpython
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-04-12 19:51:34 (GMT)
committerGitHub <noreply@github.com>2019-04-12 19:51:34 (GMT)
commit0fc91eef34a1d9194904fa093c9fbd711af0f26c (patch)
treebeec907827203135c5c5baa9303fcb27776088a3 /Include/cpython
parent23a683adf803eef405d248cc9c2a7eb08a7300e2 (diff)
downloadcpython-0fc91eef34a1d9194904fa093c9fbd711af0f26c.zip
cpython-0fc91eef34a1d9194904fa093c9fbd711af0f26c.tar.gz
cpython-0fc91eef34a1d9194904fa093c9fbd711af0f26c.tar.bz2
bpo-36389: Add _PyObject_CheckConsistency() function (GH-12803)
Add a new _PyObject_CheckConsistency() function which can be used to help debugging. The function is available in release mode. Add a 'check_content' parameter to _PyDict_CheckConsistency().
Diffstat (limited to 'Include/cpython')
-rw-r--r--Include/cpython/object.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/Include/cpython/object.h b/Include/cpython/object.h
index 64d196a..ba52a48 100644
--- a/Include/cpython/object.h
+++ b/Include/cpython/object.h
@@ -446,6 +446,21 @@ PyAPI_FUNC(void) _PyObject_AssertFailed(
int line,
const char *function);
+/* Check if an object is consistent. For example, ensure that the reference
+ counter is greater than or equal to 1, and ensure that ob_type is not NULL.
+
+ Call _PyObject_AssertFailed() if the object is inconsistent.
+
+ If check_content is zero, only check header fields: reduce the overhead.
+
+ The function always return 1. The return value is just here to be able to
+ write:
+
+ assert(_PyObject_CheckConsistency(obj, 1)); */
+PyAPI_FUNC(int) _PyObject_CheckConsistency(
+ PyObject *op,
+ int check_content);
+
#ifdef __cplusplus
}
#endif