summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorjdemeyer <jdemeyer@cage.ugent.be>2018-10-19 21:50:06 (GMT)
committerVictor Stinner <vstinner@redhat.com>2018-10-19 21:50:06 (GMT)
commit5a30620e68ebb911eef4d583de3776d782148637 (patch)
treee33bb26ccf2ab594a27b3c785e23354580de457c /Modules
parentb2e2025941f6a4fdb716bd141d31acf720353d21 (diff)
downloadcpython-5a30620e68ebb911eef4d583de3776d782148637.zip
cpython-5a30620e68ebb911eef4d583de3776d782148637.tar.gz
cpython-5a30620e68ebb911eef4d583de3776d782148637.tar.bz2
bpo-25750: Add test on bad descriptor __get__() (GH-9084)
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_testcapimodule.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index add642f..4381e93 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -4550,6 +4550,28 @@ new_hamt(PyObject *self, PyObject *args)
}
+/* def bad_get(self, obj, cls):
+ cls()
+ return repr(self)
+*/
+static PyObject*
+bad_get(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ if (nargs != 3) {
+ PyErr_SetString(PyExc_TypeError, "bad_get requires exactly 3 arguments");
+ return NULL;
+ }
+
+ PyObject *res = PyObject_CallObject(args[2], NULL);
+ if (res == NULL) {
+ return NULL;
+ }
+ Py_DECREF(res);
+
+ return PyObject_Repr(args[0]);
+}
+
+
static PyObject *
encode_locale_ex(PyObject *self, PyObject *args)
{
@@ -5017,6 +5039,7 @@ static PyMethodDef TestMethods[] = {
{"get_mapping_items", get_mapping_items, METH_O},
{"test_pythread_tss_key_state", test_pythread_tss_key_state, METH_VARARGS},
{"hamt", new_hamt, METH_NOARGS},
+ {"bad_get", bad_get, METH_FASTCALL},
{"EncodeLocaleEx", encode_locale_ex, METH_VARARGS},
{"DecodeLocaleEx", decode_locale_ex, METH_VARARGS},
{"get_coreconfig", get_coreconfig, METH_NOARGS},