From dabbfe7b3017ff6ba62fb4c44c63a43c180532dd Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 25 Mar 2015 03:16:32 +0100 Subject: [PATCH] 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. --- Objects/bytearrayobject.c | 3 ++- Objects/bytesobject.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 195c79f4016..333f9c8bf00 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -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( diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index ae3c2895a01..4d6b3e4abe1 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -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(