[Checkins] SVN: Acquisition/trunk/ Fixed 64-bit compatibility issues for Python 2.5.x / 2.6.x.

Tres Seaver tseaver at palladion.com
Sun Aug 2 14:20:48 EDT 2009


Log message for revision 102430:
  Fixed 64-bit compatibility issues for Python 2.5.x / 2.6.x.
  
  o See http://www.python.org/dev/peps/pep-0353/ for details.
  

Changed:
  U   Acquisition/trunk/CHANGES.txt
  U   Acquisition/trunk/src/Acquisition/_Acquisition.c

-=-
Modified: Acquisition/trunk/CHANGES.txt
===================================================================
--- Acquisition/trunk/CHANGES.txt	2009-08-02 18:08:06 UTC (rev 102429)
+++ Acquisition/trunk/CHANGES.txt	2009-08-02 18:20:48 UTC (rev 102430)
@@ -1,18 +1,22 @@
 Changelog
 =========
 
-2.12.2 - unreleased
+2.12.2 (unreleased)
 -------------------
 
+- Fixed 64-bit compatibility issues for Python 2.5.x / 2.6.x.  See 
+  http://www.python.org/dev/peps/pep-0353/ for details.
 
-2.12.1 - 2009-04-15
+
+2.12.1 (2009-04-15)
 -------------------
 
 - Update for iteration proxying: The proxy for `__iter__` must not rely on the
   object to have an `__iter__` itself, but also support fall-back iteration via
   `__getitem__` (this fixes https://bugs.launchpad.net/zope2/+bug/360761).
 
-2.12 - 2009-01-25
+
+2.12 (2009-01-25)
 -----------------
 
 - Release as separate package.

Modified: Acquisition/trunk/src/Acquisition/_Acquisition.c
===================================================================
--- Acquisition/trunk/src/Acquisition/_Acquisition.c	2009-08-02 18:08:06 UTC (rev 102429)
+++ Acquisition/trunk/src/Acquisition/_Acquisition.c	2009-08-02 18:20:48 UTC (rev 102430)
@@ -31,6 +31,17 @@
 #define UNLESS_ASSIGN(V,E) ASSIGN(V,E); UNLESS(V)
 #define OBJECT(O) ((PyObject*)(O))
 
+#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
+typedef int Py_ssize_t;
+typedef Py_ssize_t (*lenfunc)(PyObject *);
+typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
+typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
+typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
+typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
+#define PY_SSIZE_T_MAX INT_MAX
+#define PY_SSIZE_T_MIN INT_MIN
+#endif
+
 static PyObject *py__add__, *py__sub__, *py__mul__, *py__div__,
   *py__mod__, *py__pow__, *py__divmod__, *py__lshift__, *py__rshift__,
   *py__and__, *py__or__, *py__xor__, *py__coerce__, *py__neg__,
@@ -841,7 +852,7 @@
 
 /* Code to handle accessing Wrapper objects as sequence objects */
 
-static int
+static Py_ssize_t
 Wrapper_length(Wrapper *self)
 {
   long l;
@@ -861,26 +872,26 @@
 }
 
 static PyObject *
-Wrapper_mul(Wrapper *self, int  n)
+Wrapper_mul(Wrapper *self, Py_ssize_t  n)
 {
   return CallMethodO(OBJECT(self),py__mul__,Build("(i)", n),NULL);
 }
 
 static PyObject *
-Wrapper_item(Wrapper *self, int  i)
+Wrapper_item(Wrapper *self, Py_ssize_t  i)
 {
   return CallMethodO(OBJECT(self),py__getitem__, Build("(i)", i),NULL);
 }
 
 static PyObject *
-Wrapper_slice(Wrapper *self, int  ilow, int  ihigh)
+Wrapper_slice(Wrapper *self, Py_ssize_t  ilow, Py_ssize_t  ihigh)
 {
   return CallMethodO(OBJECT(self),py__getslice__,
 		     Build("(ii)", ilow, ihigh),NULL);
 }
 
 static int
-Wrapper_ass_item(Wrapper *self, int  i, PyObject *v)
+Wrapper_ass_item(Wrapper *self, Py_ssize_t  i, PyObject *v)
 {
   if (v)
     {
@@ -899,7 +910,7 @@
 }
 
 static int
-Wrapper_ass_slice(Wrapper *self, int  ilow, int  ihigh, PyObject *v)
+Wrapper_ass_slice(Wrapper *self, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v)
 {
   if (v)
     {
@@ -936,13 +947,13 @@
 }
 
 static PySequenceMethods Wrapper_as_sequence = {
-	(inquiry)Wrapper_length,		/*sq_length*/
+	(lenfunc)Wrapper_length,		/*sq_length*/
 	(binaryfunc)Wrapper_add,		/*sq_concat*/
-	(intargfunc)Wrapper_mul,		/*sq_repeat*/
-	(intargfunc)Wrapper_item,		/*sq_item*/
-	(intintargfunc)Wrapper_slice,		/*sq_slice*/
-	(intobjargproc)Wrapper_ass_item,	/*sq_ass_item*/
-	(intintobjargproc)Wrapper_ass_slice,	/*sq_ass_slice*/
+	(ssizeargfunc)Wrapper_mul,		/*sq_repeat*/
+	(ssizeargfunc)Wrapper_item,		/*sq_item*/
+	(ssizessizeargfunc)Wrapper_slice,		/*sq_slice*/
+	(ssizeobjargproc)Wrapper_ass_item,	/*sq_ass_item*/
+	(ssizessizeobjargproc)Wrapper_ass_slice,	/*sq_ass_slice*/
 	(objobjproc)Wrapper_contains,		/*sq_contains*/
 };
 
@@ -976,7 +987,7 @@
 }
 
 static PyMappingMethods Wrapper_as_mapping = {
-  (inquiry)Wrapper_length,		/*mp_length*/
+  (lenfunc)Wrapper_length,		/*mp_length*/
   (binaryfunc)Wrapper_subscript,	/*mp_subscript*/
   (objobjargproc)Wrapper_ass_sub,	/*mp_ass_subscript*/
 };



More information about the Checkins mailing list