nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 7d3d3dec9a94734f8c8d9b2b019dfbec05f38798
parent 6240805c4131c350f26f065e832d58f7bac8e0ec
Author: Benno Schulenberg <bensberg@justemail.net>
Date:   Sun, 30 Apr 2017 18:07:04 +0200

tweaks: use the logic from revstrstr() also in mbrevstrcasestr()

Because it is slightly faster.

Diffstat:
Msrc/chars.c | 18+++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/chars.c b/src/chars.c @@ -535,29 +535,29 @@ char *mbrevstrcasestr(const char *haystack, const char *needle, { #ifdef ENABLE_UTF8 if (use_utf8) { - size_t tail_len, needle_len; + size_t needle_len = mbstrlen(needle); + size_t tail_len = mbstrlen(pointer); - if (*needle == '\0') + if (needle_len == 0) return (char *)pointer; - needle_len = mbstrlen(needle); - if (mbstrlen(haystack) < needle_len) return NULL; - tail_len = mbstrlen(pointer); + if (tail_len < needle_len) + pointer += tail_len - needle_len; + + if (pointer < haystack) + return NULL; while (TRUE) { - if (tail_len >= needle_len && - mbstrncasecmp(pointer, needle, needle_len) == 0) + if (mbstrncasecmp(pointer, needle, needle_len) == 0) return (char *)pointer; - /* If we've reached the head of the haystack, we found nothing. */ if (pointer == haystack) return NULL; pointer = haystack + move_mbleft(haystack, pointer - haystack); - tail_len++; } } else #endif