Mercurial > cpython-lru_cache-weakref
diff Python/structmember.c @ 59586:e808fc548cd6 legacy-trunk
Fix incorrect error checks in structmember.c (backport of r78920 from py3k).
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Sat, 13 Mar 2010 14:18:34 +0000 |
| parents | 96a2371b114b |
| children | 6d4835a81b63 |
line wrap: on
line diff
--- a/Python/structmember.c Sat Mar 13 13:41:58 2010 +0000 +++ b/Python/structmember.c Sat Mar 13 14:18:34 2010 +0000 @@ -257,12 +257,13 @@ } 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 @@ 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");
