summaryrefslogtreecommitdiffstats
path: root/Modules/_testcapimodule.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-03-14 21:26:53 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-03-14 21:26:53 (GMT)
commitc4aec3628b6effcf205d70ce7d80f69847954b66 (patch)
tree4de61828675acb7bb697f2607672b4de7c23c0f6 /Modules/_testcapimodule.c
parent8a1be61849341528c866924cf69d378ce7790889 (diff)
downloadcpython-c4aec3628b6effcf205d70ce7d80f69847954b66.zip
cpython-c4aec3628b6effcf205d70ce7d80f69847954b66.tar.gz
cpython-c4aec3628b6effcf205d70ce7d80f69847954b66.tar.bz2
Check the GIL in PyObject_Malloc()
Issue #26558: The debug hook of PyObject_Malloc() now checks that the GIL is held when the function is called.
Diffstat (limited to 'Modules/_testcapimodule.c')
-rw-r--r--Modules/_testcapimodule.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index babffc4..b3d8818 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -3643,6 +3643,20 @@ pymem_api_misuse(PyObject *self, PyObject *args)
Py_RETURN_NONE;
}
+static PyObject*
+pyobject_malloc_without_gil(PyObject *self, PyObject *args)
+{
+ char *buffer;
+
+ Py_BEGIN_ALLOW_THREADS
+ buffer = PyObject_Malloc(10);
+ Py_END_ALLOW_THREADS
+
+ PyObject_Free(buffer);
+
+ Py_RETURN_NONE;
+}
+
static PyMethodDef TestMethods[] = {
{"raise_exception", raise_exception, METH_VARARGS},
@@ -3827,6 +3841,7 @@ static PyMethodDef TestMethods[] = {
{"get_recursion_depth", get_recursion_depth, METH_NOARGS},
{"pymem_buffer_overflow", pymem_buffer_overflow, METH_NOARGS},
{"pymem_api_misuse", pymem_api_misuse, METH_NOARGS},
+ {"pyobject_malloc_without_gil", pyobject_malloc_without_gil, METH_NOARGS},
{NULL, NULL} /* sentinel */
};