[Python-checkins] CVS: python/dist/src/Objects abstract.c,2.29,2.30
Andrew M. Kuchling
akuchlin@CNRI.Reston.VA.US
Wed, 23 Feb 2000 17:21:53 -0500 (EST)
Update of /projects/cvsroot/python/dist/src/Objects
In directory amarok:/home/akuchlin/src/Python-1.5/Objects
Modified Files:
abstract.c
Log Message:
Allow using long integers as arguments to PyObject_GetItem(), _SetItem(),
and _DelItem().
In sequence multiplication by a long, only call PyErr_Occurred() when the
value returned is -1.
Index: abstract.c
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Objects/abstract.c,v
retrieving revision 2.29
retrieving revision 2.30
diff -C2 -r2.29 -r2.30
*** abstract.c 2000/02/14 22:22:04 2.29
--- abstract.c 2000/02/23 22:21:50 2.30
***************
*** 123,126 ****
--- 123,132 ----
if (PyInt_Check(key))
return PySequence_GetItem(o, PyInt_AsLong(key));
+ else if (PyLong_Check(key)) {
+ long key_value = PyLong_AsLong(key);
+ if (key_value == -1 && PyErr_Occurred())
+ return NULL;
+ return PySequence_GetItem(o, key_value);
+ }
return type_error("sequence index must be integer");
}
***************
*** 148,151 ****
--- 154,163 ----
if (PyInt_Check(key))
return PySequence_SetItem(o, PyInt_AsLong(key), value);
+ else if (PyLong_Check(key)) {
+ long key_value = PyLong_AsLong(key);
+ if (key_value == -1 && PyErr_Occurred())
+ return -1;
+ return PySequence_SetItem(o, key_value, value);
+ }
type_error("sequence index must be integer");
return -1;
***************
*** 174,177 ****
--- 186,195 ----
if (PyInt_Check(key))
return PySequence_DelItem(o, PyInt_AsLong(key));
+ else if (PyLong_Check(key)) {
+ long key_value = PyLong_AsLong(key);
+ if (key_value == -1 && PyErr_Occurred())
+ return -1;
+ return PySequence_DelItem(o, key_value);
+ }
type_error("sequence index must be integer");
return -1;
***************
*** 392,396 ****
else if (PyLong_Check(w)) {
mul_value = PyLong_AsLong(w);
! if (PyErr_Occurred())
return NULL;
}
--- 410,414 ----
else if (PyLong_Check(w)) {
mul_value = PyLong_AsLong(w);
! if (mul_value == -1 && PyErr_Occurred())
return NULL;
}