diff options
author | Raymond Hettinger <python@rcn.com> | 2010-08-06 10:18:56 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2010-08-06 10:18:56 (GMT) |
commit | 3ad323ecaf9bbead043a8799d0a6189c6812b581 (patch) | |
tree | 013fa5fc3a6ba19f07f6ff24cb4eb895167d9769 /Objects | |
parent | 5e684339c23a6bcac8896a5d25549dbe9d7b8aa6 (diff) | |
download | cpython-3ad323ecaf9bbead043a8799d0a6189c6812b581.zip cpython-3ad323ecaf9bbead043a8799d0a6189c6812b581.tar.gz cpython-3ad323ecaf9bbead043a8799d0a6189c6812b581.tar.bz2 |
Issue8757: Implicit set-to-frozenset conversion not thread-safe.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/setobject.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/Objects/setobject.c b/Objects/setobject.c index f98a930..00cabe6 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -1855,12 +1855,10 @@ set_contains(PySetObject *so, PyObject *key) if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)) return -1; PyErr_Clear(); - tmpkey = make_new_set(&PyFrozenSet_Type, NULL); + tmpkey = make_new_set(&PyFrozenSet_Type, key); if (tmpkey == NULL) return -1; - set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key); rv = set_contains(so, tmpkey); - set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key); Py_DECREF(tmpkey); } return rv; @@ -1890,12 +1888,10 @@ set_remove(PySetObject *so, PyObject *key) if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)) return NULL; PyErr_Clear(); - tmpkey = make_new_set(&PyFrozenSet_Type, NULL); + tmpkey = make_new_set(&PyFrozenSet_Type, key); if (tmpkey == NULL) return NULL; - set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key); rv = set_discard_key(so, tmpkey); - set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key); Py_DECREF(tmpkey); if (rv == -1) return NULL; @@ -1924,12 +1920,10 @@ set_discard(PySetObject *so, PyObject *key) if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)) return NULL; PyErr_Clear(); - tmpkey = make_new_set(&PyFrozenSet_Type, NULL); + tmpkey = make_new_set(&PyFrozenSet_Type, key); if (tmpkey == NULL) return NULL; - set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key); result = set_discard(so, tmpkey); - set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key); Py_DECREF(tmpkey); return result; } |