]> granicus.if.org Git - python/commitdiff
Issue #8014: Fix incorrect error checks in structmember.c, and re-enable
authorMark Dickinson <dickinsm@gmail.com>
Sat, 13 Mar 2010 13:23:05 +0000 (13:23 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sat, 13 Mar 2010 13:23:05 +0000 (13:23 +0000)
previously failing test_structmember.py tests.

Lib/test/test_structmembers.py
Python/structmember.c

index 145a16e91d87bd9c8fc385528e526b4460d2ae9a..27db1614e177664e8a5542f2ebc9b3c7528a092b 100644 (file)
@@ -87,8 +87,8 @@ class ReadWriteTests(unittest.TestCase):
             'T_BOOL',
             'T_BYTE', 'T_UBYTE',
             'T_SHORT', 'T_USHORT',
-            'T_INT', #'T_UINT',
-            'T_LONG', #'T_ULONG',
+            'T_INT', 'T_UINT',
+            'T_LONG', 'T_ULONG',
             'T_PYSSIZET'
             ]
 
index 8edc35410633db110e7a405cda26e195f5e2096a..88ea6f8df710cc4c3aae48516438b81b78ba180c 100644 (file)
@@ -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");