[Python-checkins] commit of r41851 - in python/branches/ssize_t: Include/longobject.h Objects/intobject.c Objects/listobject.c Objects/longobject.c Objects/stringobject.c Objects/tupleobject.c Objects/unicodeobject.c

martin.v.loewis python-checkins at python.org
Fri Dec 30 11:16:46 CET 2005


Author: martin.v.loewis
Date: Fri Dec 30 11:16:44 2005
New Revision: 41851

Modified:
   python/branches/ssize_t/Include/longobject.h
   python/branches/ssize_t/Objects/intobject.c
   python/branches/ssize_t/Objects/listobject.c
   python/branches/ssize_t/Objects/longobject.c
   python/branches/ssize_t/Objects/stringobject.c
   python/branches/ssize_t/Objects/tupleobject.c
   python/branches/ssize_t/Objects/unicodeobject.c
Log:
Remove PyLong_AsSsize_t.


Modified: python/branches/ssize_t/Include/longobject.h
==============================================================================
--- python/branches/ssize_t/Include/longobject.h	(original)
+++ python/branches/ssize_t/Include/longobject.h	Fri Dec 30 11:16:44 2005
@@ -18,11 +18,11 @@
 PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long);
 PyAPI_FUNC(PyObject *) PyLong_FromDouble(double);
 PyAPI_FUNC(long) PyLong_AsLong(PyObject *);
-PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *);
 PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *);
 PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *);
 
 /* For use by intobject.c only */
+PyAPI_FUNC(Py_ssize_t) _PyLong_AsSsize_t(PyObject *);
 PyAPI_FUNC(PyObject *) _PyLong_FromSize_t(size_t);
 PyAPI_FUNC(PyObject *) _PyLong_FromSsize_t(Py_ssize_t);
 

Modified: python/branches/ssize_t/Objects/intobject.c
==============================================================================
--- python/branches/ssize_t/Objects/intobject.c	(original)
+++ python/branches/ssize_t/Objects/intobject.c	Fri Dec 30 11:16:44 2005
@@ -188,6 +188,8 @@
 Py_ssize_t
 PyInt_AsSsize_t(register PyObject *op)
 {
+	if (op && !PyInt_CheckExact(op) && PyLong_Check(op))
+		return _PyLong_AsSsize_t(op);
 #if SIZEOF_SIZE_T==SIZEOF_LONG
 	return PyInt_AsLong(op);
 #else

Modified: python/branches/ssize_t/Objects/listobject.c
==============================================================================
--- python/branches/ssize_t/Objects/listobject.c	(original)
+++ python/branches/ssize_t/Objects/listobject.c	Fri Dec 30 11:16:44 2005
@@ -2453,14 +2453,8 @@
 static PyObject *
 list_subscript(PyListObject* self, PyObject* item)
 {
-	if (PyInt_Check(item)) {
-		long i = PyInt_AS_LONG(item);
-		if (i < 0)
-			i += PyList_GET_SIZE(self);
-		return list_item(self, i);
-	}
-	else if (PyLong_Check(item)) {
-		Py_ssize_t i = PyLong_AsSsize_t(item);
+	if (PyInt_Check(item) || PyLong_Check(item)) {
+		Py_ssize_t i = PyInt_AsSsize_t(item);
 		if (i == -1 && PyErr_Occurred())
 			return NULL;
 		if (i < 0)

Modified: python/branches/ssize_t/Objects/longobject.c
==============================================================================
--- python/branches/ssize_t/Objects/longobject.c	(original)
+++ python/branches/ssize_t/Objects/longobject.c	Fri Dec 30 11:16:44 2005
@@ -245,7 +245,7 @@
    Returns -1 and sets an error condition if overflow occurs. */
 
 Py_ssize_t
-PyLong_AsSsize_t(PyObject *vv)
+_PyLong_AsSsize_t(PyObject *vv)
 {
 	register PyLongObject *v;
 	size_t x, prev;
@@ -253,8 +253,6 @@
 	int sign;
 
 	if (vv == NULL || !PyLong_Check(vv)) {
-		if (vv != NULL && PyInt_Check(vv))
-			return PyInt_AsSsize_t(vv);
 		PyErr_BadInternalCall();
 		return -1;
 	}

Modified: python/branches/ssize_t/Objects/stringobject.c
==============================================================================
--- python/branches/ssize_t/Objects/stringobject.c	(original)
+++ python/branches/ssize_t/Objects/stringobject.c	Fri Dec 30 11:16:44 2005
@@ -1169,14 +1169,8 @@
 static PyObject*
 string_subscript(PyStringObject* self, PyObject* item)
 {
-	if (PyInt_Check(item)) {
-		long i = PyInt_AS_LONG(item);
-		if (i < 0)
-			i += PyString_GET_SIZE(self);
-		return string_item(self,i);
-	}
-	else if (PyLong_Check(item)) {
-		Py_ssize_t i = PyLong_AsSsize_t(item);
+	if (PyInt_Check(item) || PyLong_Check(item)) {
+		Py_ssize_t i = PyInt_AsSsize_t(item);
 		if (i == -1 && PyErr_Occurred())
 			return NULL;
 		if (i < 0)

Modified: python/branches/ssize_t/Objects/tupleobject.c
==============================================================================
--- python/branches/ssize_t/Objects/tupleobject.c	(original)
+++ python/branches/ssize_t/Objects/tupleobject.c	Fri Dec 30 11:16:44 2005
@@ -585,14 +585,8 @@
 static PyObject*
 tuplesubscript(PyTupleObject* self, PyObject* item)
 {
-	if (PyInt_Check(item)) {
-		long i = PyInt_AS_LONG(item);
-		if (i < 0)
-			i += PyTuple_GET_SIZE(self);
-		return tupleitem(self, i);
-	}
-	else if (PyLong_Check(item)) {
-		Py_ssize_t i = PyLong_AsSsize_t(item);
+	if (PyInt_Check(item) || PyLong_Check(item)) {
+		Py_ssize_t i = PyInt_AsSsize_t(item);
 		if (i == -1 && PyErr_Occurred())
 			return NULL;
 		if (i < 0)

Modified: python/branches/ssize_t/Objects/unicodeobject.c
==============================================================================
--- python/branches/ssize_t/Objects/unicodeobject.c	(original)
+++ python/branches/ssize_t/Objects/unicodeobject.c	Fri Dec 30 11:16:44 2005
@@ -6465,13 +6465,8 @@
 static PyObject*
 unicode_subscript(PyUnicodeObject* self, PyObject* item)
 {
-    if (PyInt_Check(item)) {
-        long i = PyInt_AS_LONG(item);
-        if (i < 0)
-            i += PyString_GET_SIZE(self);
-        return unicode_getitem(self, i);
-    } else if (PyLong_Check(item)) {
-        Py_ssize_t i = PyLong_AsSsize_t(item);
+    if (PyInt_Check(item) || PyLong_Check(item)) {
+        Py_ssize_t i = PyInt_AsSsize_t(item);
         if (i == -1 && PyErr_Occurred())
             return NULL;
         if (i < 0)


More information about the Python-checkins mailing list