diff options
author | David Bolen <db3l.net@gmail.com> | 2012-03-07 11:13:52 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-03-07 11:17:13 +0100 |
commit | 387389b644b91808fdee74846b2d855382f48ed7 (patch) | |
tree | cf9896f7506c59a4b6e3f282959297cd1adbeb91 /pyuno | |
parent | 4634cbc237239da771e0f6a81f78171ecec726ba (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.cxx | 13 |
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, |