diff --git a/src/chars.c b/src/chars.c index a7200f942deb0d0d5043574b590410c803c30bf8..65408447c7c1105bf5144d69b9b7cf5e65e36fdb 100644 --- a/src/chars.c +++ b/src/chars.c @@ -456,12 +456,7 @@ char *mbstrcasestr(const char *haystack, const char *needle) { #ifdef ENABLE_UTF8 if (use_utf8) { - size_t needle_len; - - if (*needle == '\0') - return (char *)haystack; - - needle_len = mbstrlen(needle); + size_t needle_len = mbstrlen(needle); while (*haystack != '\0') { if (mbstrncasecmp(haystack, needle, needle_len) == 0) @@ -484,9 +479,6 @@ char *revstrstr(const char *haystack, const char *needle, size_t needle_len = strlen(needle); size_t tail_len = strlen(pointer); - if (needle_len == 0) - return (char *)pointer; - if (tail_len < needle_len) pointer += tail_len - needle_len; @@ -507,9 +499,6 @@ char *revstrcasestr(const char *haystack, const char *needle, size_t needle_len = strlen(needle); size_t tail_len = strlen(pointer); - if (needle_len == 0) - return (char *)pointer; - if (tail_len < needle_len) pointer += tail_len - needle_len; @@ -532,9 +521,6 @@ char *mbrevstrcasestr(const char *haystack, const char *needle, size_t needle_len = mbstrlen(needle); size_t tail_len = mbstrlen(pointer); - if (needle_len == 0) - return (char *)pointer; - if (tail_len < needle_len) pointer += tail_len - needle_len; diff --git a/src/utils.c b/src/utils.c index 7438ed243f0aecb40d584ed4529601285a696476..6773d00329a0540765cfa00005b0ff05fdadfc49 100644 --- a/src/utils.c +++ b/src/utils.c @@ -237,6 +237,10 @@ bool is_separate_word(size_t position, size_t length, const char *buf) const char *strstrwrapper(const char *haystack, const char *needle, const char *start) { + /* Just in case we search for an empty needle. :/ */ + if (*needle == '\0') + return (char *)start; + if (ISSET(USE_REGEXP)) { if (ISSET(BACKWARDS_SEARCH)) { size_t last_find, ceiling, far_end;