summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2017-09-27 04:37:37 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2017-09-27 04:37:37 (GMT)
commitbdb215b18a42360b6a9c82876fa71f19ca1a416d (patch)
tree6959fda40daef25cb1b0792b0b08671506f0450c /Modules
parentf0db2dfda777ad3380e7816cabe4c4240f31687f (diff)
downloadcpython-bdb215b18a42360b6a9c82876fa71f19ca1a416d.zip
cpython-bdb215b18a42360b6a9c82876fa71f19ca1a416d.tar.gz
cpython-bdb215b18a42360b6a9c82876fa71f19ca1a416d.tar.bz2
[3.6] bpo-31490: Fix an assertion failure in ctypes in case an _anonymous_ attr is defined only outside _fields_. (GH-3615) (#3774)
(cherry picked from commit 30b61b51e05d2d43e8e2e783b0a9df738535423b)
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_ctypes/stgdict.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/Modules/_ctypes/stgdict.c b/Modules/_ctypes/stgdict.c
index 716d1e9..8278b2f 100644
--- a/Modules/_ctypes/stgdict.c
+++ b/Modules/_ctypes/stgdict.c
@@ -282,7 +282,15 @@ MakeAnonFields(PyObject *type)
Py_DECREF(anon_names);
return -1;
}
- assert(Py_TYPE(descr) == &PyCField_Type);
+ if (Py_TYPE(descr) != &PyCField_Type) {
+ PyErr_Format(PyExc_AttributeError,
+ "'%U' is specified in _anonymous_ but not in "
+ "_fields_",
+ fname);
+ Py_DECREF(anon_names);
+ Py_DECREF(descr);
+ return -1;
+ }
descr->anonymous = 1;
/* descr is in the field descriptor. */