mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
Fix fastsearch for UCS2 and UCS4
* If needle is 0, try (p[0] >> 16) & 0xff for UCS4 * Disable fastsearch_memchr_1char() if needle is zero for UCS2 and UCS4
This commit is contained in:
parent
c5af7730e3
commit
8cc70dcf70
8 changed files with 15 additions and 2 deletions
|
|
@ -115,11 +115,17 @@ FASTSEARCH(const STRINGLIB_CHAR* s, Py_ssize_t n,
|
|||
unsigned char needle;
|
||||
int use_needle = 1;
|
||||
needle = p[0] & 0xff;
|
||||
if (needle == 0 && sizeof(STRINGLIB_CHAR) > 1) {
|
||||
#if STRINGLIB_SIZEOF_CHAR > 1
|
||||
if (needle == 0) {
|
||||
needle = (p[0] >> 8) & 0xff;
|
||||
if (needle >= 32)
|
||||
#if STRINGLIB_SIZEOF_CHAR > 2
|
||||
if (needle == 0)
|
||||
needle = (p[0] >> 16) & 0xff;
|
||||
#endif
|
||||
if (needle >= 32 || needle == 0)
|
||||
use_needle = 0;
|
||||
}
|
||||
#endif
|
||||
if (use_needle)
|
||||
return STRINGLIB(fastsearch_memchr_1char)
|
||||
(s, n, p[0], needle, maxcount, mode);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue