diff options
| author | Mark Dickinson <dickinsm@gmail.com> | 2010-03-13 14:18:34 +0000 |
|---|---|---|
| committer | Mark Dickinson <dickinsm@gmail.com> | 2010-03-13 14:18:34 +0000 |
| commit | 8c55c438c7a42bdd04c56a5c1622c38a5cd2a919 (patch) | |
| tree | ab2378b782b742d63fdae4436fda705ad11c94f0 /Python | |
| parent | aace63714d74e8989b7e2511f7dd5b0ec2258539 (diff) | |
| download | cpython-8c55c438c7a42bdd04c56a5c1622c38a5cd2a919.tar.gz | |
Fix incorrect error checks in structmember.c (backport of r78920 from py3k).
Diffstat (limited to 'Python')
| -rw-r--r-- | Python/structmember.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Python/structmember.c b/Python/structmember.c index 9f87c076e3..d2d827341b 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -257,12 +257,13 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) } case T_UINT:{ unsigned long ulong_val = PyLong_AsUnsignedLong(v); - if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) { + if ((ulong_val == (unsigned long)-1) && PyErr_Occurred()) { /* XXX: For compatibility, accept negative int values as well. */ PyErr_Clear(); ulong_val = PyLong_AsLong(v); - if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) + if ((ulong_val == (unsigned long)-1) && + PyErr_Occurred()) return -1; *(unsigned int *)addr = (unsigned int)ulong_val; WARN("Writing negative value into unsigned field"); @@ -286,7 +287,7 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) as well. */ PyErr_Clear(); *(unsigned long*)addr = PyLong_AsLong(v); - if ((*(unsigned long*)addr == (unsigned int)-1) + if ((*(unsigned long*)addr == (unsigned long)-1) && PyErr_Occurred()) return -1; WARN("Writing negative value into unsigned field"); |
