Skip to content

Commit 9b06d82

Browse files
committed
bytearray_mod conditional lock second arg
1 parent fe15cf3 commit 9b06d82

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Objects/bytearrayobject.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2749,7 +2749,6 @@ static PyObject *
27492749
bytearray_mod_lock_held(PyObject *v, PyObject *w)
27502750
{
27512751
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(v);
2752-
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(w);
27532752
if (!PyByteArray_Check(v))
27542753
Py_RETURN_NOTIMPLEMENTED;
27552754
return _PyBytes_FormatEx(PyByteArray_AS_STRING(v), PyByteArray_GET_SIZE(v), w, 1);
@@ -2759,9 +2758,16 @@ static PyObject *
27592758
bytearray_mod(PyObject *v, PyObject *w)
27602759
{
27612760
PyObject *ret;
2762-
Py_BEGIN_CRITICAL_SECTION2(v, w);
2763-
ret = bytearray_mod_lock_held(v, w);
2764-
Py_END_CRITICAL_SECTION2();
2761+
if (PyByteArray_Check(w)) {
2762+
Py_BEGIN_CRITICAL_SECTION2(v, w);
2763+
ret = bytearray_mod_lock_held(v, w);
2764+
Py_END_CRITICAL_SECTION2();
2765+
}
2766+
else {
2767+
Py_BEGIN_CRITICAL_SECTION(v);
2768+
ret = bytearray_mod_lock_held(v, w);
2769+
Py_END_CRITICAL_SECTION();
2770+
}
27652771
return ret;
27662772
}
27672773

0 commit comments

Comments
 (0)