Commit 4103e4df authored by Raymond Hettinger's avatar Raymond Hettinger

Issue #28071: Add early-out for differencing from an empty set.

parent 34b74fff
...@@ -33,6 +33,8 @@ Core and Builtins ...@@ -33,6 +33,8 @@ Core and Builtins
- Issue #28046: Remove platform-specific directories from sys.path. - Issue #28046: Remove platform-specific directories from sys.path.
- Issue #28071: Add early-out for differencing from an empty set.
- Issue #25758: Prevents zipimport from unnecessarily encoding a filename - Issue #25758: Prevents zipimport from unnecessarily encoding a filename
(patch by Eryk Sun) (patch by Eryk Sun)
......
...@@ -1476,6 +1476,10 @@ PyDoc_STRVAR(isdisjoint_doc, ...@@ -1476,6 +1476,10 @@ PyDoc_STRVAR(isdisjoint_doc,
static int static int
set_difference_update_internal(PySetObject *so, PyObject *other) set_difference_update_internal(PySetObject *so, PyObject *other)
{ {
if (PySet_GET_SIZE(so) == 0) {
return 0;
}
if ((PyObject *)so == other) if ((PyObject *)so == other)
return set_clear_internal(so); return set_clear_internal(so);
...@@ -1550,6 +1554,10 @@ set_difference(PySetObject *so, PyObject *other) ...@@ -1550,6 +1554,10 @@ set_difference(PySetObject *so, PyObject *other)
Py_ssize_t pos = 0; Py_ssize_t pos = 0;
int rv; int rv;
if (PySet_GET_SIZE(so) == 0) {
return set_copy(so);
}
if (!PyAnySet_Check(other) && !PyDict_CheckExact(other)) { if (!PyAnySet_Check(other) && !PyDict_CheckExact(other)) {
return set_copy_and_difference(so, other); return set_copy_and_difference(so, other);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment