=== modified file 'Objects/setobject.c' --- Objects/setobject.c 2010-05-09 13:46:46 +0000 +++ Objects/setobject.c 2010-05-11 08:48:38 +0000 @@ -1523,6 +1523,7 @@ set_difference(PySetObject *so, PyObject *other) { PyObject *result; + PySetObject *tmp; setentry *entry; Py_ssize_t pos = 0; @@ -1555,6 +1556,12 @@ return result; } + if (set_len((PyObject *)so) > set_len(other)) { + tmp = so; + so = (PySetObject *)other; + other = (PyObject *)tmp; + } + while (set_next(so, &pos, &entry)) { int rv = set_contains_entry((PySetObject *)other, entry); if (rv == -1) {