Expand Up @@ -64,8 +64,29 @@ assert(obj->ob_exports >= 0); } typedef PyObject* (*_ba_bytes_op)(const char *buf, Py_ssize_t len, PyObject *sub, Py_ssize_t start, Py_ssize_t end); static PyObject * _bytearray_with_buffer(PyByteArrayObject *self, _ba_bytes_op op, PyObject *sub, Py_ssize_t start, Py_ssize_t end) { PyObject *res; Py_BEGIN_CRITICAL_SECTION(self); /* Increase exports to prevent bytearray storage from changing during op. */ self->ob_exports++; res = op(PyByteArray_AS_STRING(self), Py_SIZE(self), sub, start, end); self->ob_exports--; Py_END_CRITICAL_SECTION(self); Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.1.7)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.1.7)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 1.1.1w)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 1.1.1w)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.2.6)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.2.6)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.3.5)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.3.5)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.0.18)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.0.18)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Hypothesis tests on Ubuntu
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Hypothesis tests on Ubuntu
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Address sanitizer (ubuntu-24.04)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Address sanitizer (ubuntu-24.04)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu (free-threading) / build and test (ubuntu-24.04)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu (free-threading) / build and test (ubuntu-24.04)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu / build and test (ubuntu-24.04)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu / build and test (ubuntu-24.04)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu (free-threading) / build and test (ubuntu-24.04-arm)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu (free-threading) / build and test (ubuntu-24.04-arm)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu / build and test (ubuntu-24.04-arm)
‘Py_END_CRITICAL_SECTION’ undeclared (first use in this function)
Check failure on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu / build and test (ubuntu-24.04-arm)
macro "Py_END_CRITICAL_SECTION" passed 1 arguments, but takes just 0
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows / build (arm64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\pythoncore.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows / build (arm64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows (free-threading) / build (arm64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\pythoncore.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows (free-threading) / build (arm64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows / build and test (x64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\pythoncore.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows / build and test (x64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows (free-threading) / build and test (x64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\pythoncore.vcxproj]
Check warning on line 83 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Windows (free-threading) / build and test (x64)
too many arguments for function-like macro invocation 'Py_END_CRITICAL_SECTION' [D:\a\cpython\cpython\PCbuild\_freeze_module.vcxproj]
return res; } static int _canresize(PyByteArrayObject *self) Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.1.7)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 1.1.1w)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.2.6)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.3.5)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu SSL tests with OpenSSL (ubuntu-24.04, 3.0.18)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Hypothesis tests on Ubuntu
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Address sanitizer (ubuntu-24.04)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu (free-threading) / build and test (ubuntu-24.04)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu / build and test (ubuntu-24.04)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu (free-threading) / build and test (ubuntu-24.04-arm)
invalid storage class for function ‘_canresize’
Check failure on line 89 in Objects/bytearrayobject.c
View workflow job for this annotation GitHub Actions / Ubuntu / build and test (ubuntu-24.04-arm)
invalid storage class for function ‘_canresize’
{ if (self->ob_exports > 0) { PyErr_SetString(PyExc_BufferError, Expand Down Expand Up @@ -1146,8 +1167,7 @@ Py_ssize_t end) /*[clinic end generated code: output=413e1cab2ae87da0 input=793dfad803e2952f]*/ { return _Py_bytes_find(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), sub, start, end); return _bytearray_with_buffer(self, _Py_bytes_find, sub, start, end); } /*[clinic input] Expand All @@ -1161,8 +1181,7 @@ Py_ssize_t start, Py_ssize_t end) /*[clinic end generated code: output=a21ee2692e4f1233 input=4deb529db38deda8]*/ { return _Py_bytes_count(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), sub, start, end); return _bytearray_with_buffer(self, _Py_bytes_count, sub, start, end); } /*[clinic input] Expand Down Expand Up @@ -1207,8 +1226,7 @@ Py_ssize_t start, Py_ssize_t end) /*[clinic end generated code: output=067a1e78efc672a7 input=8cbaf6836dbd2a9a]*/ { return _Py_bytes_index(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), sub, start, end); return _bytearray_with_buffer(self, _Py_bytes_index, sub, start, end); } /*[clinic input] Expand All @@ -1224,8 +1242,7 @@ Py_ssize_t start, Py_ssize_t end) /*[clinic end generated code: output=51bf886f932b283c input=eaa107468a158423]*/ { return _Py_bytes_rfind(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), sub, start, end); return _bytearray_with_buffer(self, _Py_bytes_rfind, sub, start, end); } /*[clinic input] Expand All @@ -1241,14 +1258,24 @@ Py_ssize_t start, Py_ssize_t end) /*[clinic end generated code: output=38e1cf66bafb08b9 input=81cf49d0af4d5bd0]*/ { return _Py_bytes_rindex(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), sub, start, end); return _bytearray_with_buffer(self, _Py_bytes_rindex, sub, start, end); } static int bytearray_contains(PyObject *self, PyObject *arg) { return _Py_bytes_contains(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), arg); int ret = -1; Py_BEGIN_CRITICAL_SECTION(self); PyByteArrayObject *ba = _PyByteArray_CAST(self); /* Increase exports to prevent bytearray storage from changing during _Py_bytes_contains(). */ ba->ob_exports++; ret = _Py_bytes_contains(PyByteArray_AS_STRING(ba), PyByteArray_GET_SIZE(self), arg); ba->ob_exports--; Py_END_CRITICAL_SECTION(); return ret; } /*[clinic input] Expand All @@ -1271,8 +1298,7 @@ Py_ssize_t start, Py_ssize_t end) /*[clinic end generated code: output=a3d9b6d44d3662a6 input=76385e0b376b45c1]*/ { return _Py_bytes_startswith(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), subobj, start, end); return _bytearray_with_buffer(self, _Py_bytes_startswith, subobj, start, end); } /*[clinic input] Expand All @@ -1295,8 +1321,7 @@ Py_ssize_t start, Py_ssize_t end) /*[clinic end generated code: output=e75ea8c227954caa input=9b8baa879aa3d74b]*/ { return _Py_bytes_endswith(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), subobj, start, end); return _bytearray_with_buffer(self, _Py_bytes_endswith, subobj, start, end); } /*[clinic input] Expand Down Expand Up @@ -1539,26 +1564,32 @@ Py_ssize_t maxsplit) /*[clinic end generated code: output=833e2cf385d9a04d input=24f82669f41bf523]*/ { Py_ssize_t len = PyByteArray_GET_SIZE(self), n; const char *s = PyByteArray_AS_STRING(self), *sub; PyObject *list; Py_buffer vsub; PyObject *list = NULL; /* Increase exports to prevent bytearray storage from changing during _Py_bytes_contains(). */ self->ob_exports++; const char *sbuf = PyByteArray_AS_STRING(self); Py_ssize_t slen = PyByteArray_GET_SIZE((PyObject *)self); if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (sep == Py_None) return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (sep == Py_None) { list = stringlib_split_whitespace((PyObject*)self, sbuf, slen, maxsplit); goto done; } if (PyObject_GetBuffer(sep, & vsub, PyBUF_SIMPLE) != 0) return NULL; sub = vsub.buf ;n = vsub.len; Py_buffer vsub; if (PyObject_GetBuffer(sep, &vsub, PyBUF_SIMPLE) != 0) { goto done ;} list = stringlib_split( (PyObject*) self, s, len, sub, n, maxsplit ); list = stringlib_split((PyObject*)self, sbuf, slen, (const char *)vsub.buf, vsub.len, maxsplit); PyBuffer_Release(&vsub); done: self->ob_exports--; return list; } Expand Down Expand Up @@ -1650,26 +1681,32 @@ Py_ssize_t maxsplit) /*[clinic end generated code: output=a55e0b5a03cb6190 input=a68286e4dd692ffe]*/ { Py_ssize_t len = PyByteArray_GET_SIZE(self), n; const char *s = PyByteArray_AS_STRING(self), *sub; PyObject *list; Py_buffer vsub; PyObject *list = NULL; /* Increase exports to prevent bytearray storage from changing during _Py_bytes_contains(). */ self->ob_exports++; const char *sbuf = PyByteArray_AS_STRING(self); Py_ssize_t slen = PyByteArray_GET_SIZE((PyObject *)self); if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (sep == Py_None) return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (sep == Py_None) { list = stringlib_rsplit_whitespace((PyObject*)self, sbuf, slen, maxsplit); goto done; } if (PyObject_GetBuffer(sep, & vsub, PyBUF_SIMPLE) != 0) return NULL; sub = vsub.buf ;n = vsub.len; Py_buffer vsub; if (PyObject_GetBuffer(sep, &vsub, PyBUF_SIMPLE) != 0) { goto done ;} list = stringlib_rsplit( (PyObject*) self, s, len, sub, n, maxsplit ); list = stringlib_rsplit((PyObject*)self, sbuf, slen, (const char *)vsub.buf, vsub.len, maxsplit); PyBuffer_Release(&vsub); done: self->ob_exports--; return list; } Expand Down