Skip to content

Commit 5ce1ed0

Browse files
committed
Add missing critical sections
1 parent 5e9b898 commit 5ce1ed0

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

Objects/setobject.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,7 +1296,11 @@ set_update_internal(PySetObject *so, PyObject *other)
12961296
return rv;
12971297
}
12981298
else if (PyFrozenDict_CheckExact(other)) {
1299-
return set_update_dict_lock_held(so, other);
1299+
int rv;
1300+
Py_BEGIN_CRITICAL_SECTION(so);
1301+
rv = set_update_dict_lock_held(so, other);
1302+
Py_END_CRITICAL_SECTION();
1303+
return rv;
13001304
}
13011305
else {
13021306
int rv;
@@ -2177,7 +2181,9 @@ static int
21772181
set_symmetric_difference_update_dict(PySetObject *so, PyObject *other)
21782182
{
21792183
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(so);
2180-
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(other);
2184+
if (!PyFrozenDict_CheckExact(other)) {
2185+
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(other);
2186+
}
21812187

21822188
Py_ssize_t pos = 0;
21832189
PyObject *key, *value;
@@ -2252,7 +2258,9 @@ set_symmetric_difference_update_impl(PySetObject *so, PyObject *other)
22522258
Py_END_CRITICAL_SECTION2();
22532259
}
22542260
else if (PyFrozenDict_CheckExact(other)) {
2261+
Py_BEGIN_CRITICAL_SECTION(so);
22552262
rv = set_symmetric_difference_update_dict(so, other);
2263+
Py_END_CRITICAL_SECTION();
22562264
}
22572265
else if (PyAnySet_Check(other)) {
22582266
Py_BEGIN_CRITICAL_SECTION2(so, other);

0 commit comments

Comments
 (0)