[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; 
  		}