From b33efe312c8d89ecc6e2ba9f075d2d0a9e28c3e1 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 16 Jan 2007 17:41:45 +0000 Subject: [PATCH] Switch types from int to Py_ssize_t to be compatible with Python 2.5 on 64-bit archs --- _dbus_bindings/conn-methods.c | 2 +- _dbus_bindings/dbus_bindings-internal.h | 10 ++++++++++ _dbus_bindings/message-append.c | 8 ++++---- _dbus_bindings/message-get-args.c | 7 +++++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/_dbus_bindings/conn-methods.c b/_dbus_bindings/conn-methods.c index bf1fd59..f9c8554 100644 --- a/_dbus_bindings/conn-methods.c +++ b/_dbus_bindings/conn-methods.c @@ -141,7 +141,7 @@ _filter_message(DBusConnection *conn, DBusMessage *message, void *user_data) PyObject *callable = NULL; PyObject *msg_obj; #ifndef DBUS_PYTHON_DISABLE_CHECKS - int i, size; + Py_ssize_t i, size; #endif dbus_message_ref(message); diff --git a/_dbus_bindings/dbus_bindings-internal.h b/_dbus_bindings/dbus_bindings-internal.h index aedb343..d98a7ae 100644 --- a/_dbus_bindings/dbus_bindings-internal.h +++ b/_dbus_bindings/dbus_bindings-internal.h @@ -25,7 +25,17 @@ #ifndef DBUS_BINDINGS_INTERNAL_H #define DBUS_BINDINGS_INTERNAL_H +#define PY_SSIZE_T_CLEAN 1 + #include + +/* Python < 2.5 compat */ +#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) +typedef int Py_ssize_t; +#define PY_SSIZE_T_MAX INT_MAX +#define PY_SSIZE_T_MIN INT_MIN +#endif + #define INSIDE_DBUS_PYTHON_BINDINGS #include "dbus-python.h" diff --git a/_dbus_bindings/message-append.c b/_dbus_bindings/message-append.c index f629c57..5e4869c 100644 --- a/_dbus_bindings/message-append.c +++ b/_dbus_bindings/message-append.c @@ -233,12 +233,12 @@ _signature_string_from_pyobject(PyObject *obj, long *variant_level_ptr) return PyString_FromString(DBUS_TYPE_STRING_AS_STRING); } else if (PyTuple_Check(obj)) { - int len = PyTuple_GET_SIZE(obj); + Py_ssize_t len = PyTuple_GET_SIZE(obj); PyObject *list = PyList_New(len + 2); /* new ref */ PyObject *item; /* temporary new ref */ PyObject *empty_str; /* temporary new ref */ PyObject *ret; - int i; + Py_ssize_t i; if (!list) return NULL; if (len == 0) { @@ -314,7 +314,7 @@ _signature_string_from_pyobject(PyObject *obj, long *variant_level_ptr) } else if (PyDict_Check(obj)) { PyObject *key, *value, *keysig, *valuesig; - int pos = 0; + Py_ssize_t pos = 0; PyObject *ret = NULL; if (DBusPyDict_Check(obj) && PyString_Check(((DBusPyDict *)obj)->signature)) { @@ -708,7 +708,7 @@ _message_iter_append_string_as_byte_array(DBusMessageIter *appender, PyObject *obj) { /* a bit of a faster path for byte arrays that are strings */ - int len = PyString_GET_SIZE(obj); + Py_ssize_t len = PyString_GET_SIZE(obj); const char *s; DBusMessageIter sub; int ret; diff --git a/_dbus_bindings/message-get-args.c b/_dbus_bindings/message-get-args.c index 7b981c5..41f3404 100644 --- a/_dbus_bindings/message-get-args.c +++ b/_dbus_bindings/message-get-args.c @@ -23,6 +23,8 @@ * */ +#define PY_SIZE_T_CLEAN 1 + #define DBG_IS_TOO_VERBOSE #include "types-internal.h" #include "message-internal.h" @@ -119,7 +121,8 @@ _message_iter_get_dict(DBusMessageIter *iter, int status; sig = PyObject_CallFunction((PyObject *)&DBusPySignature_Type, - "(s#)", sig_str+2, strlen(sig_str)-3); + "(s#)", sig_str+2, + (Py_ssize_t)strlen(sig_str)-3); status = PyDict_SetItem(kwargs, dbus_py_signature_const, sig); Py_DECREF(sig); if (status < 0) { @@ -375,7 +378,7 @@ _message_iter_get_pyobject(DBusMessageIter *iter, dbus_message_iter_get_fixed_array(&sub, (const unsigned char **)&u.s, &n); - args = Py_BuildValue("(s#)", u.s, n); + args = Py_BuildValue("(s#)", u.s, (Py_ssize_t)n); if (!args) break; ret = PyObject_Call((PyObject *)&DBusPyByteArray_Type, args, kwargs); -- 2.11.4.GIT