summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_set.py6
-rw-r--r--Objects/setobject.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py
index 729cc3b209..b32d953a84 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 a892dc8ae1..1127680c07 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);