Handle the case with zero arguments.

This commit is contained in:
Raymond Hettinger 2008-06-11 00:44:47 +00:00
parent 363070aa46
commit 610a93ea26
2 changed files with 9 additions and 0 deletions

View File

@ -104,6 +104,12 @@ class TestJointOps(unittest.TestCase):
self.assertEqual(self.thetype('abcba').intersection(C('ccb')), set('bc')) self.assertEqual(self.thetype('abcba').intersection(C('ccb')), set('bc'))
self.assertEqual(self.thetype('abcba').intersection(C('ef')), set('')) self.assertEqual(self.thetype('abcba').intersection(C('ef')), set(''))
self.assertEqual(self.thetype('abcba').intersection(C('cbcf'), C('bag')), set('b')) self.assertEqual(self.thetype('abcba').intersection(C('cbcf'), C('bag')), set('b'))
s = self.thetype('abcba')
z = s.intersection()
if self.thetype == frozenset():
self.assertEqual(id(s), id(z))
else:
self.assertNotEqual(id(s), id(z))
def test_isdisjoint(self): def test_isdisjoint(self):
def f(s1, s2): def f(s1, s2):

View File

@ -1312,6 +1312,9 @@ set_intersection_multi(PySetObject *so, PyObject *args)
Py_ssize_t i; Py_ssize_t i;
PyObject *result = (PyObject *)so; PyObject *result = (PyObject *)so;
if (PyTuple_GET_SIZE(args) == 0)
return set_copy(so);
Py_INCREF(so); Py_INCREF(so);
for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) { for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) {
PyObject *other = PyTuple_GET_ITEM(args, i); PyObject *other = PyTuple_GET_ITEM(args, i);