diff options
author | Raymond Hettinger <python@rcn.com> | 2008-06-11 00:44:47 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2008-06-11 00:44:47 (GMT) |
commit | 610a93ea2623ff324c99c52147d78838335ae900 (patch) | |
tree | acc69052d2628f24ab3a0aa48968d50d4c8f1bb0 | |
parent | 363070aa463d9eed4bf815c288067a1716ef3aaa (diff) | |
download | cpython-610a93ea2623ff324c99c52147d78838335ae900.zip cpython-610a93ea2623ff324c99c52147d78838335ae900.tar.gz cpython-610a93ea2623ff324c99c52147d78838335ae900.tar.bz2 |
Handle the case with zero arguments.
-rw-r--r-- | Lib/test/test_set.py | 6 | ||||
-rw-r--r-- | Objects/setobject.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index 729cc3b..b32d953 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -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('ef')), set('')) 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 f(s1, s2): diff --git a/Objects/setobject.c b/Objects/setobject.c index a892dc8..1127680 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -1312,6 +1312,9 @@ set_intersection_multi(PySetObject *so, PyObject *args) Py_ssize_t i; PyObject *result = (PyObject *)so; + if (PyTuple_GET_SIZE(args) == 0) + return set_copy(so); + Py_INCREF(so); for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) { PyObject *other = PyTuple_GET_ITEM(args, i); |