(original) (raw)
changeset: 103689:fa0af1a6344d user: Raymond Hettinger python@rcn.com date: Sun Sep 11 22:02:28 2016 -0700 files: Misc/NEWS Objects/setobject.c description: Issue #28071: Add early-out for differencing from an empty set. diff -r 45cd0b7b78c6 -r fa0af1a6344d Misc/NEWS --- a/Misc/NEWS Mon Sep 12 08:00:01 2016 +0300 +++ b/Misc/NEWS Sun Sep 11 22:02:28 2016 -0700 @@ -33,6 +33,8 @@ - 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 (patch by Eryk Sun) diff -r 45cd0b7b78c6 -r fa0af1a6344d Objects/setobject.c --- a/Objects/setobject.c Mon Sep 12 08:00:01 2016 +0300 +++ b/Objects/setobject.c Sun Sep 11 22:02:28 2016 -0700 @@ -1476,6 +1476,10 @@ static int set_difference_update_internal(PySetObject *so, PyObject *other) { + if (PySet_GET_SIZE(so) == 0) { + return 0; + } + if ((PyObject *)so == other) return set_clear_internal(so); @@ -1550,6 +1554,10 @@ Py_ssize_t pos = 0; int rv; + if (PySet_GET_SIZE(so) == 0) { + return set_copy(so); + } + if (!PyAnySet_Check(other) && !PyDict_CheckExact(other)) { return set_copy_and_difference(so, other); } /python@rcn.com