Skip to content

Commit 252e400

Browse files
committed
Issue python#8014: Fix incorrect error checks in structmember.c, and re-enable
previously failing test_structmember.py tests.
1 parent d59b416 commit 252e400

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

Lib/test/test_structmembers.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ def test_bad_assignments(self):
8787
'T_BOOL',
8888
'T_BYTE', 'T_UBYTE',
8989
'T_SHORT', 'T_USHORT',
90-
'T_INT', #'T_UINT',
91-
'T_LONG', #'T_ULONG',
90+
'T_INT', 'T_UINT',
91+
'T_LONG', 'T_ULONG',
9292
'T_PYSSIZET'
9393
]
9494

Python/structmember.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,13 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
187187
}
188188
case T_UINT:{
189189
unsigned long ulong_val = PyLong_AsUnsignedLong(v);
190-
if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) {
190+
if ((ulong_val == (unsigned long)-1) && PyErr_Occurred()) {
191191
/* XXX: For compatibility, accept negative int values
192192
as well. */
193193
PyErr_Clear();
194194
ulong_val = PyLong_AsLong(v);
195-
if ((ulong_val == (unsigned int)-1) && PyErr_Occurred())
195+
if ((ulong_val == (unsigned long)-1) &&
196+
PyErr_Occurred())
196197
return -1;
197198
*(unsigned int *)addr = (unsigned int)ulong_val;
198199
WARN("Writing negative value into unsigned field");
@@ -216,7 +217,7 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
216217
as well. */
217218
PyErr_Clear();
218219
*(unsigned long*)addr = PyLong_AsLong(v);
219-
if ((*(unsigned long*)addr == (unsigned int)-1)
220+
if ((*(unsigned long*)addr == (unsigned long)-1)
220221
&& PyErr_Occurred())
221222
return -1;
222223
WARN("Writing negative value into unsigned field");

0 commit comments

Comments
 (0)