summaryrefslogtreecommitdiffstats
path: root/Modules/_testcapimodule.c
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2011-02-24 20:50:49 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2011-02-24 20:50:49 (GMT)
commit5bffa79c227236a8bfde6bf174a1f3f0a43fd2ea (patch)
treec755754b167f2c992e610dab9a6dfe7c6ff59511 /Modules/_testcapimodule.c
parent1ce92dc20d698ce46c3459da7801c76bb8518550 (diff)
downloadcpython-5bffa79c227236a8bfde6bf174a1f3f0a43fd2ea.zip
cpython-5bffa79c227236a8bfde6bf174a1f3f0a43fd2ea.tar.gz
cpython-5bffa79c227236a8bfde6bf174a1f3f0a43fd2ea.tar.bz2
Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with
a buffer struct having a NULL data pointer.
Diffstat (limited to 'Modules/_testcapimodule.c')
-rw-r--r--Modules/_testcapimodule.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index f326568..f19d0df 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -2231,6 +2231,15 @@ make_exception_with_doc(PyObject *self, PyObject *args, PyObject *kwargs)
return PyErr_NewExceptionWithDoc(name, doc, base, dict);
}
+static PyObject *
+make_memoryview_from_NULL_pointer(PyObject *self)
+{
+ Py_buffer info;
+ if (PyBuffer_FillInfo(&info, NULL, NULL, 1, 1, PyBUF_FULL_RO) < 0)
+ return NULL;
+ return PyMemoryView_FromBuffer(&info);
+}
+
/* Test that the fatal error from not having a current thread doesn't
cause an infinite loop. Run via Lib/test/test_capi.py */
static PyObject *
@@ -2326,6 +2335,8 @@ static PyMethodDef TestMethods[] = {
{"code_newempty", code_newempty, METH_VARARGS},
{"make_exception_with_doc", (PyCFunction)make_exception_with_doc,
METH_VARARGS | METH_KEYWORDS},
+ {"make_memoryview_from_NULL_pointer", (PyCFunction)make_memoryview_from_NULL_pointer,
+ METH_NOARGS},
{"crash_no_current_thread", (PyCFunction)crash_no_current_thread, METH_NOARGS},
{NULL, NULL} /* sentinel */
};