summaryrefslogtreecommitdiffstats
path: root/Objects/classobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/classobject.c')
-rw-r--r--Objects/classobject.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/Objects/classobject.c b/Objects/classobject.c
index 1e93908..e8bac91 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -974,24 +974,25 @@ instance_length(PyInstanceObject *inst)
if (res == NULL)
return -1;
if (PyInt_Check(res)) {
- Py_ssize_t temp = PyInt_AsSsize_t(res);
- if (temp == -1 && PyErr_Occurred()) {
+ outcome = PyInt_AsSsize_t(res);
+ if (outcome == -1 && PyErr_Occurred()) {
Py_DECREF(res);
return -1;
}
- outcome = (Py_ssize_t)temp;
-#if SIZEOF_SIZE_T < SIZEOF_LONG
+#if SIZEOF_SIZE_T < SIZEOF_INT
/* Overflow check -- range of PyInt is more than C int */
- if (outcome != temp) {
+ if (outcome != (int)outcome) {
PyErr_SetString(PyExc_OverflowError,
"__len__() should return 0 <= outcome < 2**31");
outcome = -1;
}
else
#endif
- if (outcome < 0)
+ if (outcome < 0) {
PyErr_SetString(PyExc_ValueError,
"__len__() should return >= 0");
+ outcome = -1;
+ }
}
else {
PyErr_SetString(PyExc_TypeError,