summaryrefslogtreecommitdiff
path: root/pyuno
diff options
context:
space:
mode:
authorDavid Bolen <db3l.net@gmail.com>2012-03-07 11:13:52 +0100
committerMichael Stahl <mstahl@redhat.com>2012-03-07 11:17:13 +0100
commit387389b644b91808fdee74846b2d855382f48ed7 (patch)
treecf9896f7506c59a4b6e3f282959297cd1adbeb91 /pyuno
parent4634cbc237239da771e0f6a81f78171ecec726ba (diff)
fdo#46926: fix UNO struct comparison in Python 2
This requires setting a rich comparison flag in Python 2, while Python 3 uses rich comparison by default. (regression from a09ce46818fd4d5e08b3af9a478501cd8ef5b4fe)
Diffstat (limited to 'pyuno')
-rw-r--r--pyuno/source/module/pyuno.cxx13
1 files changed, 10 insertions, 3 deletions
diff --git a/pyuno/source/module/pyuno.cxx b/pyuno/source/module/pyuno.cxx
index b7724c7d0992..555fefd14043 100644
--- a/pyuno/source/module/pyuno.cxx
+++ b/pyuno/source/module/pyuno.cxx
@@ -641,9 +641,16 @@ static PyObject* PyUNO_cmp( PyObject *self, PyObject *that, int op )
{
raisePyExceptionWithAny( makeAny( e ) );
}
- return Py_False;
+ return (op == Py_EQ ? Py_False : Py_True);
}
+/* Python 2 has a tp_flags value for rich comparisons. Python 3 does not (on by default) */
+#ifdef Py_TPFLAGS_HAVE_RICHCOMPARE
+#define TP_FLAGS (Py_TPFLAGS_HAVE_RICHCOMPARE)
+#else
+#define TP_FLAGS 0
+#endif
+
static PyTypeObject PyUNOType =
{
PyVarObject_HEAD_INIT( &PyType_Type, 0 )
@@ -654,7 +661,7 @@ static PyTypeObject PyUNOType =
(printfunc) 0,
(getattrfunc) PyUNO_getattr,
(setattrfunc) PyUNO_setattr,
- 0,
+ (cmpfunc) 0,
(reprfunc) PyUNO_repr,
0,
0,
@@ -665,7 +672,7 @@ static PyTypeObject PyUNOType =
(getattrofunc)0,
(setattrofunc)0,
NULL,
- 0,
+ TP_FLAGS,
NULL,
(traverseproc)0,
(inquiry)0,