Issue #23573: Fix bytes.rfind() and bytearray.rfind() on Windows

Windows has no memrchr() function.

This change is only a workaround, the optimization must be reenabled on other
platforms.
This commit is contained in:
Victor Stinner 2015-03-25 03:16:32 +01:00
parent 39183dfc68
commit dabbfe7b30
2 changed files with 4 additions and 2 deletions

View File

@ -1166,7 +1166,8 @@ 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) {
/* Issue #23573: FIXME, windows has no memrchr() */
else if (sub_len == 1 && dir > 0) {
unsigned char needle = *sub;
int mode = (dir > 0) ? FAST_SEARCH : FAST_RSEARCH;
res = stringlib_fastsearch_memchr_1char(

View File

@ -1938,7 +1938,8 @@ 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) {
/* Issue #23573: FIXME, windows has no memrchr() */
else if (sub_len == 1 && dir > 0) {
unsigned char needle = *sub;
int mode = (dir > 0) ? FAST_SEARCH : FAST_RSEARCH;
res = stringlib_fastsearch_memchr_1char(