summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>2011-09-02 21:07:54 (GMT)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>2011-09-02 21:07:54 (GMT)
commit842d921a79273cd04113d154b127622ff243f9c0 (patch)
treef58e2a9015034632ee387044baeda9128c5df25d /Modules
parent154f2b4726ef92e73dbf5d7d8f01df72c2a73101 (diff)
downloadcpython-842d921a79273cd04113d154b127622ff243f9c0.zip
cpython-842d921a79273cd04113d154b127622ff243f9c0.tar.gz
cpython-842d921a79273cd04113d154b127622ff243f9c0.tar.bz2
ctypes: Slightly better error message when a struct field name is not a string.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_ctypes/stgdict.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/Modules/_ctypes/stgdict.c b/Modules/_ctypes/stgdict.c
index 14dc16f..63f956b 100644
--- a/Modules/_ctypes/stgdict.c
+++ b/Modules/_ctypes/stgdict.c
@@ -426,9 +426,9 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
StgDictObject *dict;
int bitsize = 0;
- if (!pair || !PyArg_ParseTuple(pair, "OO|i", &name, &desc, &bitsize)) {
- PyErr_SetString(PyExc_AttributeError,
- "'_fields_' must be a sequence of pairs");
+ if (!pair || !PyArg_ParseTuple(pair, "UO|i", &name, &desc, &bitsize)) {
+ PyErr_SetString(PyExc_TypeError,
+ "'_fields_' must be a sequence of (name, C type) pairs");
Py_XDECREF(pair);
return -1;
}
@@ -478,6 +478,7 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
}
} else
bitsize = 0;
+
if (isStruct && !isPacked) {
char *fieldfmt = dict->format ? dict->format : "B";
char *fieldname = _PyUnicode_AsString(name);
@@ -487,10 +488,6 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
if (fieldname == NULL)
{
- PyErr_Format(PyExc_TypeError,
- "structure field name must be string not %s",
- name->ob_type->tp_name);
-
Py_DECREF(pair);
return -1;
}
@@ -509,6 +506,7 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
return -1;
}
}
+
if (isStruct) {
prop = PyCField_FromDesc(desc, i,
&field_size, bitsize, &bitofs,