Skip to content

Commit 1f11cf9

Browse files
authored
bpo-37219: Remove erroneous optimization for differencing an empty set (GH-13965)
1 parent 408a2ef commit 1f11cf9

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

Lib/test/test_set.py

+6
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,12 @@ def test_pickling(self):
895895
self.assertEqual(self.set, copy,
896896
"%s != %s" % (self.set, copy))
897897

898+
def test_issue_37219(self):
899+
with self.assertRaises(TypeError):
900+
set().difference(123)
901+
with self.assertRaises(TypeError):
902+
set().difference_update(123)
903+
898904
#------------------------------------------------------------------------------
899905

900906
class TestBasicOpsEmpty(TestBasicOps, unittest.TestCase):
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove errorneous optimization for empty set differences.

Objects/setobject.c

-8
Original file line numberDiff line numberDiff line change
@@ -1456,10 +1456,6 @@ PyDoc_STRVAR(isdisjoint_doc,
14561456
static int
14571457
set_difference_update_internal(PySetObject *so, PyObject *other)
14581458
{
1459-
if (PySet_GET_SIZE(so) == 0) {
1460-
return 0;
1461-
}
1462-
14631459
if ((PyObject *)so == other)
14641460
return set_clear_internal(so);
14651461

@@ -1534,10 +1530,6 @@ set_difference(PySetObject *so, PyObject *other)
15341530
Py_ssize_t pos = 0, other_size;
15351531
int rv;
15361532

1537-
if (PySet_GET_SIZE(so) == 0) {
1538-
return set_copy(so, NULL);
1539-
}
1540-
15411533
if (PyAnySet_Check(other)) {
15421534
other_size = PySet_GET_SIZE(other);
15431535
}

0 commit comments

Comments
 (0)