summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_descr.py12
-rw-r--r--Objects/stringobject.c7
2 files changed, 10 insertions, 9 deletions
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 9e8565f..ed3cea4 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -1555,7 +1555,7 @@ def inherits():
self._rev = self.__class__("".join(L))
return self._rev
s = madstring("abcdefghijklmnopqrstuvwxyz")
- #XXX verify(s == "abcdefghijklmnopqrstuvwxyz")
+ verify(s == "abcdefghijklmnopqrstuvwxyz")
verify(s.rev() == madstring("zyxwvutsrqponmlkjihgfedcba"))
verify(s.rev().rev() == madstring("abcdefghijklmnopqrstuvwxyz"))
for i in range(256):
@@ -1569,12 +1569,12 @@ def inherits():
base = "\x00" * 5
s = madstring(base)
- #XXX verify(s == base)
+ verify(s == base)
verify(str(s) == base)
verify(str(s).__class__ is str)
verify(hash(s) == hash(base))
- #XXX verify({s: 1}[base] == 1)
- #XXX verify({base: 1}[s] == 1)
+ verify({s: 1}[base] == 1)
+ verify({base: 1}[s] == 1)
verify((s + "").__class__ is str)
verify(s + "" == base)
verify(("" + s).__class__ is str)
@@ -1613,14 +1613,14 @@ def inherits():
verify(s.lower() == base)
s = madstring("x y")
- #XXX verify(s == "x y")
+ verify(s == "x y")
verify(intern(s).__class__ is str)
verify(intern(s) is intern("x y"))
verify(intern(s) == "x y")
i = intern("y x")
s = madstring("y x")
- #XXX verify(s == i)
+ verify(s == i)
verify(intern(s).__class__ is str)
verify(intern(s) is i)
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 99a16ed..e29be5a 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -824,9 +824,10 @@ string_richcompare(PyStringObject *a, PyStringObject *b, int op)
int min_len;
PyObject *result;
- /* One of the objects is a string object. Make sure the
- other one is one, too. */
- if (a->ob_type != b->ob_type) {
+ /* May sure both arguments use string comparison.
+ This implies PyString_Check(a) && PyString_Check(b). */
+ if (a->ob_type->tp_richcompare != (richcmpfunc)string_richcompare ||
+ b->ob_type->tp_richcompare != (richcmpfunc)string_richcompare) {
result = Py_NotImplemented;
goto out;
}