mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Issue #24821: Refactor STRINGLIB(fastsearch_memchr_1char) and split it on
STRINGLIB(find_char) and STRINGLIB(rfind_char) that can be used independedly without special preconditions.
This commit is contained in:
parent
0304729ec4
commit
413fdcea21
4 changed files with 124 additions and 103 deletions
|
@ -1159,16 +1159,15 @@ bytearray_find_internal(PyByteArrayObject *self, PyObject *args, int dir)
|
|||
ADJUST_INDICES(start, end, len);
|
||||
if (end - start < sub_len)
|
||||
res = -1;
|
||||
else if (sub_len == 1
|
||||
#ifndef HAVE_MEMRCHR
|
||||
&& dir > 0
|
||||
#endif
|
||||
) {
|
||||
unsigned char needle = *sub;
|
||||
int mode = (dir > 0) ? FAST_SEARCH : FAST_RSEARCH;
|
||||
res = stringlib_fastsearch_memchr_1char(
|
||||
PyByteArray_AS_STRING(self) + start, end - start,
|
||||
needle, needle, mode);
|
||||
else if (sub_len == 1) {
|
||||
if (dir > 0)
|
||||
res = stringlib_find_char(
|
||||
PyByteArray_AS_STRING(self) + start, end - start,
|
||||
*sub);
|
||||
else
|
||||
res = stringlib_rfind_char(
|
||||
PyByteArray_AS_STRING(self) + start, end - start,
|
||||
*sub);
|
||||
if (res >= 0)
|
||||
res += start;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue