mirror of
https://github.com/python/cpython.git
synced 2025-08-25 11:15:02 +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
|
@ -1937,16 +1937,15 @@ bytes_find_internal(PyBytesObject *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(
|
||||
PyBytes_AS_STRING(self) + start, end - start,
|
||||
needle, needle, mode);
|
||||
else if (sub_len == 1) {
|
||||
if (dir > 0)
|
||||
res = stringlib_find_char(
|
||||
PyBytes_AS_STRING(self) + start, end - start,
|
||||
*sub);
|
||||
else
|
||||
res = stringlib_rfind_char(
|
||||
PyBytes_AS_STRING(self) + start, end - start,
|
||||
*sub);
|
||||
if (res >= 0)
|
||||
res += start;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue