[Zope-Checkins] SVN: Zope/trunk/ Made C extensions work for 64-bit Python 2.5.x / 2.6.x.
Tres Seaver
tseaver at palladion.com
Sun Aug 2 16:57:40 EDT 2009
Log message for revision 102444:
Made C extensions work for 64-bit Python 2.5.x / 2.6.x.
Changed:
U Zope/trunk/doc/CHANGES.rst
U Zope/trunk/src/AccessControl/cAccessControl.c
U Zope/trunk/src/Record/_Record.c
-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst 2009-08-02 20:56:09 UTC (rev 102443)
+++ Zope/trunk/doc/CHANGES.rst 2009-08-02 20:57:40 UTC (rev 102444)
@@ -56,6 +56,11 @@
Bugs Fixed
++++++++++
+- Made C extensions work for 64-bit Python 2.5.x / 2.6.x.
+
+- Unfutzed test failures due to use of naive timezones with ``datetime``
+ instances.
+
- LP #397861: exporting $PYTHON in generated 'zopectl' for fixing import issue
with "bin/zopectl adduser"
Modified: Zope/trunk/src/AccessControl/cAccessControl.c
===================================================================
--- Zope/trunk/src/AccessControl/cAccessControl.c 2009-08-02 20:56:09 UTC (rev 102443)
+++ Zope/trunk/src/AccessControl/cAccessControl.c 2009-08-02 20:57:40 UTC (rev 102444)
@@ -54,7 +54,18 @@
#include <stdio.h>
#include <stdlib.h>
+#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 void
PyVar_Assign(PyObject **v, PyObject *e)
{
@@ -349,9 +360,9 @@
static PyObject *PermissionRole_getattro(PermissionRole *self, PyObject *name);
static PyObject *imPermissionRole_of(imPermissionRole *self, PyObject *parent);
-static int imPermissionRole_length(imPermissionRole *self);
+static Py_ssize_t imPermissionRole_length(imPermissionRole *self);
static PyObject *imPermissionRole_get(imPermissionRole *self,
- int item);
+ Py_ssize_t item);
static void imPermissionRole_dealloc(imPermissionRole *self);
static PyObject *rolesForPermissionOn(PyObject *self, PyObject *args);
@@ -593,16 +604,16 @@
};
static PySequenceMethods imSequenceMethods = {
- (inquiry) imPermissionRole_length, /* sq_length */
+ (lenfunc) imPermissionRole_length, /* sq_length */
(binaryfunc) NULL, /* sq_concat */
- (intargfunc) NULL, /* sq_repeat */
- (intargfunc) imPermissionRole_get, /* sq_item */
- (intintargfunc) NULL, /* sq_slice */
- (intobjargproc) NULL, /* sq_ass_item */
- (intintobjargproc) NULL, /* sq_ass_slice */
+ (ssizeargfunc) NULL, /* sq_repeat */
+ (ssizeargfunc) imPermissionRole_get, /* sq_item */
+ (ssizessizeargfunc) NULL, /* sq_slice */
+ (ssizeobjargproc) NULL, /* sq_ass_item */
+ (ssizessizeobjargproc) NULL, /* sq_ass_slice */
(objobjproc) NULL, /* sq_contains */
(binaryfunc) NULL, /* sq_inplace_concat */
- (intargfunc) NULL /* sq_inplace_repeat */
+ (ssizeargfunc) NULL /* sq_inplace_repeat */
};
static PyExtensionClass imPermissionRoleType = {
@@ -1613,9 +1624,9 @@
/*
** imPermissionRole_length
*/
-static int imPermissionRole_length(imPermissionRole *self) {
+static Py_ssize_t imPermissionRole_length(imPermissionRole *self) {
- int l;
+ Py_ssize_t l;
PyObject *v;
PyObject *pa;
@@ -1654,7 +1665,7 @@
*/
static PyObject *imPermissionRole_get(imPermissionRole *self,
- int item) {
+ Py_ssize_t item) {
PyObject *v;
PyObject *pa;
Modified: Zope/trunk/src/Record/_Record.c
===================================================================
--- Zope/trunk/src/Record/_Record.c 2009-08-02 20:56:09 UTC (rev 102443)
+++ Zope/trunk/src/Record/_Record.c 2009-08-02 20:57:40 UTC (rev 102444)
@@ -21,6 +21,17 @@
/* ----------------------------------------------------- */
+#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 void PyVar_Assign(PyObject **v, PyObject *e) { Py_XDECREF(*v); *v=e;}
#define ASSIGN(V,E) PyVar_Assign(&(V),(E))
#define UNLESS(E) if(!(E))
@@ -41,10 +52,10 @@
/* ---------------------------------------------------------------- */
-static int
+static Py_ssize_t
Record_init(Record *self)
{
- int l;
+ Py_ssize_t l;
UNLESS(self->schema)
UNLESS(self->schema=PyObject_GetAttr(OBJECT(self->ob_type),
@@ -67,7 +78,7 @@
Record___setstate__(Record *self, PyObject *args)
{
PyObject *state=0, *parent, **d;
- int l, ls, i;
+ Py_ssize_t l, ls, i;
if((l=Record_init(self)) < 0) return NULL;
@@ -102,7 +113,7 @@
Record___getstate__( Record *self, PyObject *args)
{
PyObject *r, **d, *v;
- int i, l;
+ Py_ssize_t i, l;
UNLESS(self->data) return PyTuple_New(0);
@@ -162,7 +173,7 @@
static PyObject *
Record_getattr(Record *self, PyObject *name)
{
- int l, i;
+ Py_ssize_t l, i;
PyObject *io;
if((l=Record_init(self)) < 0) return NULL;
@@ -197,7 +208,7 @@
static int
Record_setattr(Record *self, PyObject *name, PyObject *v)
{
- int l, i;
+ Py_ssize_t l, i;
PyObject *io;
if((l=Record_init(self)) < 0) return -1;
@@ -225,7 +236,8 @@
static int
Record_compare(Record *v, Record *w)
{
- int lv, lw, i, c;
+ Py_ssize_t lv, lw, i;
+ int c;
PyObject **dv, **dw;
if((lv=Record_init(v)) < 0) return -1;
@@ -258,7 +270,7 @@
}
static PyObject *
-Record_repeat(Record *self, int n)
+Record_repeat(Record *self, Py_ssize_t n)
{
PyErr_SetString(PyExc_TypeError,
"Record objects do not support repetition");
@@ -280,10 +292,10 @@
}
static PyObject *
-Record_item(Record *self, int i)
+Record_item(Record *self, Py_ssize_t i)
{
PyObject *o;
- int l;
+ Py_ssize_t l;
if((l=Record_init(self)) < 0) return NULL;
if(i < 0 || i >= l) return IndexError(i);
@@ -296,7 +308,7 @@
}
static PyObject *
-Record_slice(Record *self, int ilow, int ihigh)
+Record_slice(Record *self, Py_ssize_t ilow, Py_ssize_t ihigh)
{
PyErr_SetString(PyExc_TypeError,
"Record objects do not support slicing");
@@ -304,9 +316,9 @@
}
static int
-Record_ass_item(Record *self, int i, PyObject *v)
+Record_ass_item(Record *self, Py_ssize_t i, PyObject *v)
{
- int l;
+ Py_ssize_t l;
if((l=Record_init(self)) < 0) return -1;
if(i < 0 || i >= l)
@@ -335,13 +347,13 @@
}
static PySequenceMethods Record_as_sequence = {
- (inquiry)Record_init, /*sq_length*/
+ (lenfunc)Record_init, /*sq_length*/
(binaryfunc)Record_concat, /*sq_concat*/
- (intargfunc)Record_repeat, /*sq_repeat*/
- (intargfunc)Record_item, /*sq_item*/
- (intintargfunc)Record_slice, /*sq_slice*/
- (intobjargproc)Record_ass_item, /*sq_ass_item*/
- (intintobjargproc)Record_ass_slice, /*sq_ass_slice*/
+ (ssizeargfunc)Record_repeat, /*sq_repeat*/
+ (ssizeargfunc)Record_item, /*sq_item*/
+ (ssizessizeargfunc)Record_slice, /*sq_slice*/
+ (ssizeobjargproc)Record_ass_item, /*sq_ass_item*/
+ (ssizessizeobjargproc)Record_ass_slice, /*sq_ass_slice*/
};
/* -------------------------------------------------------------- */
@@ -349,7 +361,7 @@
static PyObject *
Record_subscript(Record *self, PyObject *key)
{
- int i, l;
+ Py_ssize_t i, l;
PyObject *io;
if((l=Record_init(self)) < 0) return NULL;
@@ -389,7 +401,7 @@
static int
Record_ass_sub(Record *self, PyObject *key, PyObject *v)
{
- int i, l;
+ Py_ssize_t i, l;
PyObject *io;
if((l=Record_init(self)) < 0) return -1;
@@ -422,7 +434,7 @@
}
static PyMappingMethods Record_as_mapping = {
- (inquiry)Record_init, /*mp_length*/
+ (lenfunc)Record_init, /*mp_length*/
(binaryfunc)Record_subscript, /*mp_subscript*/
(objobjargproc)Record_ass_sub, /*mp_ass_subscript*/
};
More information about the Zope-Checkins
mailing list