Skip to content

Commit 9db06a4

Browse files
committed
Fix dict_merge() assertion in Free Threading
1 parent 97cb44b commit 9db06a4

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

Objects/dictobject.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4297,13 +4297,13 @@ dict_merge(PyObject *a, PyObject *b, int override, PyObject **dupkey)
42974297
assert(0 <= override && override <= 2);
42984298

42994299
PyDictObject *mp = _PyAnyDict_CAST(a);
4300-
assert(can_modify_dict(mp));
43014300

43024301
int res = 0;
43034302
if (PyAnyDict_Check(b) && (Py_TYPE(b)->tp_iter == dict_iter)) {
43044303
PyDictObject *other = (PyDictObject*)b;
43054304
int res;
43064305
Py_BEGIN_CRITICAL_SECTION2(a, b);
4306+
assert(can_modify_dict(mp));
43074307
res = dict_dict_merge((PyDictObject *)a, other, override, dupkey);
43084308
ASSERT_CONSISTENT(a);
43094309
Py_END_CRITICAL_SECTION2();
@@ -4312,6 +4312,8 @@ dict_merge(PyObject *a, PyObject *b, int override, PyObject **dupkey)
43124312
else {
43134313
/* Do it the generic, slower way */
43144314
Py_BEGIN_CRITICAL_SECTION(a);
4315+
assert(can_modify_dict(mp));
4316+
43154317
PyObject *keys = PyMapping_Keys(b);
43164318
PyObject *iter;
43174319
PyObject *key, *value;

0 commit comments

Comments
 (0)