From b244f6950bd739a1d5dea7e119150e90ac03604f Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 10 Apr 2000 13:42:33 +0000 Subject: Marc-Andre Lemburg: * TypeErrors during comparing of mixed type arguments including a Unicode object are now masked (just like they are for all other combinations). --- Objects/object.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Objects/object.c b/Objects/object.c index 265ab9b..968fdd0 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -347,8 +347,21 @@ PyObject_Compare(v, w) return cmp; } } - else if (PyUnicode_Check(v) || PyUnicode_Check(w)) - return PyUnicode_Compare(v, w); + else if (PyUnicode_Check(v) || PyUnicode_Check(w)) { + int result = PyUnicode_Compare(v, w); + if (result == -1 && PyErr_Occurred() && + PyErr_ExceptionMatches(PyExc_TypeError)) + /* TypeErrors are ignored: if Unicode coercion + fails due to one of the arguments not + having the right type, we continue as + defined by the coercion protocol (see + above). Luckily, decoding errors are + reported as ValueErrors and are not masked + by this technique. */ + PyErr_Clear(); + else + return result; + } else if (vtp->tp_as_number != NULL) vname = ""; else if (wtp->tp_as_number != NULL) -- cgit v0.12