@@ -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
21772181set_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