Mercurial > cpython-lru_cache-weakref
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; |
