Skip to content

Commit 0feaa1a

Browse files
use lock held clear of dict
1 parent 68aee59 commit 0feaa1a

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

Objects/odictobject.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,6 +1181,9 @@ OrderedDict_popitem_impl(PyODictObject *self, int last)
11811181
PyDoc_STRVAR(odict_keys__doc__, "");
11821182

11831183
static PyObject * odictkeys_new(PyObject *od, PyObject *Py_UNUSED(ignored)); /* forward */
1184+
static int
1185+
_PyODict_SetItem_KnownHash_LockHeld(PyObject *od, PyObject *key, PyObject *value,
1186+
Py_hash_t hash); /* forward */
11841187

11851188
/* values() */
11861189

@@ -1217,7 +1220,7 @@ static PyObject *
12171220
OrderedDict_clear_impl(PyODictObject *self)
12181221
/*[clinic end generated code: output=a1a76d1322f556c5 input=08b12322e74c535c]*/
12191222
{
1220-
PyDict_Clear((PyObject *)self);
1223+
_PyDict_Clear_LockHeld((PyDictObject *)self);
12211224
_odict_clear_nodes(self);
12221225
Py_RETURN_NONE;
12231226
}
@@ -1259,8 +1262,8 @@ OrderedDict_copy_impl(PyObject *od)
12591262
PyErr_SetObject(PyExc_KeyError, key);
12601263
goto fail;
12611264
}
1262-
if (_PyODict_SetItem_KnownHash((PyObject *)od_copy, key, value,
1263-
_odictnode_HASH(node)) != 0)
1265+
if (_PyODict_SetItem_KnownHash_LockHeld((PyObject *)od_copy, key, value,
1266+
_odictnode_HASH(node)) != 0)
12641267
goto fail;
12651268
}
12661269
}

0 commit comments

Comments
 (0)