comparison 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
comparison
equal deleted inserted replaced
59582:51d26f31bce9 59586:e808fc548cd6
255 WARN("Truncation of value to int"); 255 WARN("Truncation of value to int");
256 break; 256 break;
257 } 257 }
258 case T_UINT:{ 258 case T_UINT:{
259 unsigned long ulong_val = PyLong_AsUnsignedLong(v); 259 unsigned long ulong_val = PyLong_AsUnsignedLong(v);
260 if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) { 260 if ((ulong_val == (unsigned long)-1) && PyErr_Occurred()) {
261 /* XXX: For compatibility, accept negative int values 261 /* XXX: For compatibility, accept negative int values
262 as well. */ 262 as well. */
263 PyErr_Clear(); 263 PyErr_Clear();
264 ulong_val = PyLong_AsLong(v); 264 ulong_val = PyLong_AsLong(v);
265 if ((ulong_val == (unsigned int)-1) && PyErr_Occurred()) 265 if ((ulong_val == (unsigned long)-1) &&
266 PyErr_Occurred())
266 return -1; 267 return -1;
267 *(unsigned int *)addr = (unsigned int)ulong_val; 268 *(unsigned int *)addr = (unsigned int)ulong_val;
268 WARN("Writing negative value into unsigned field"); 269 WARN("Writing negative value into unsigned field");
269 } else 270 } else
270 *(unsigned int *)addr = (unsigned int)ulong_val; 271 *(unsigned int *)addr = (unsigned int)ulong_val;
284 && PyErr_Occurred()) { 285 && PyErr_Occurred()) {
285 /* XXX: For compatibility, accept negative int values 286 /* XXX: For compatibility, accept negative int values
286 as well. */ 287 as well. */
287 PyErr_Clear(); 288 PyErr_Clear();
288 *(unsigned long*)addr = PyLong_AsLong(v); 289 *(unsigned long*)addr = PyLong_AsLong(v);
289 if ((*(unsigned long*)addr == (unsigned int)-1) 290 if ((*(unsigned long*)addr == (unsigned long)-1)
290 && PyErr_Occurred()) 291 && PyErr_Occurred())
291 return -1; 292 return -1;
292 WARN("Writing negative value into unsigned field"); 293 WARN("Writing negative value into unsigned field");
293 } 294 }
294 break; 295 break;