]> granicus.if.org Git - python/commitdiff
Bypass set specific optimizations for set and frozenset subclasses.
authorRaymond Hettinger <python@rcn.com>
Thu, 8 Feb 2007 00:49:51 +0000 (00:49 +0000)
committerRaymond Hettinger <python@rcn.com>
Thu, 8 Feb 2007 00:49:51 +0000 (00:49 +0000)
Objects/setobject.c

index 5b5fb3df012ae00d1c05733e6094302988340ce8..fc9d8234f43a879c348eb596f838b254805ea238 100644 (file)
@@ -912,7 +912,7 @@ set_update_internal(PySetObject *so, PyObject *other)
 {
        PyObject *key, *it;
 
-       if (PyAnySet_Check(other))
+       if (PyAnySet_CheckExact(other))
                return set_merge(so, other);
 
        if (PyDict_CheckExact(other)) {
@@ -1190,7 +1190,7 @@ set_intersection(PySetObject *so, PyObject *other)
        if (result == NULL)
                return NULL;
 
-       if (PyAnySet_Check(other)) {            
+       if (PyAnySet_CheckExact(other)) {               
                Py_ssize_t pos = 0;
                setentry *entry;
 
@@ -1314,7 +1314,7 @@ set_difference_update_internal(PySetObject *so, PyObject *other)
        if ((PyObject *)so == other)
                return set_clear_internal(so);
        
-       if (PyAnySet_Check(other)) {
+       if (PyAnySet_CheckExact(other)) {
                setentry *entry;
                Py_ssize_t pos = 0;
 
@@ -1363,7 +1363,7 @@ set_difference(PySetObject *so, PyObject *other)
        setentry *entry;
        Py_ssize_t pos = 0;
 
-       if (!PyAnySet_Check(other)  && !PyDict_CheckExact(other)) {
+       if (!PyAnySet_CheckExact(other)  && !PyDict_CheckExact(other)) {
                result = set_copy(so);
                if (result == NULL)
                        return NULL;
@@ -1472,7 +1472,7 @@ set_symmetric_difference_update(PySetObject *so, PyObject *other)
                Py_RETURN_NONE;
        }
 
-       if (PyAnySet_Check(other)) {
+       if (PyAnySet_CheckExact(other)) {
                Py_INCREF(other);
                otherset = (PySetObject *)other;
        } else {
@@ -1555,7 +1555,7 @@ set_issubset(PySetObject *so, PyObject *other)
        setentry *entry;
        Py_ssize_t pos = 0;
 
-       if (!PyAnySet_Check(other)) {
+       if (!PyAnySet_CheckExact(other)) {
                PyObject *tmp, *result;
                tmp = make_new_set(&PySet_Type, other);
                if (tmp == NULL)
@@ -1584,7 +1584,7 @@ set_issuperset(PySetObject *so, PyObject *other)
 {
        PyObject *tmp, *result;
 
-       if (!PyAnySet_Check(other)) {
+       if (!PyAnySet_CheckExact(other)) {
                tmp = make_new_set(&PySet_Type, other);
                if (tmp == NULL)
                        return NULL;