From 252e4003b95f4d79560d4c8d30aa9d2514b15caf Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sat, 13 Mar 2010 13:23:05 +0000 Subject: Issue #8014: Fix incorrect error checks in structmember.c, and re-enable previously failing test_structmember.py tests. --- Python/structmember.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Python') diff --git a/Python/structmember.c b/Python/structmember.c index 8edc354106..88ea6f8df7 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -187,12 +187,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"); @@ -216,7 +217,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"); -- cgit v1.2.1