commit c42d6d378a2fed269e1fb18d2d98be86276a9a09
parent 1a79b3d5147050ae73942ee098dce36cf9b59deb
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sun, 30 Apr 2017 20:18:20 +0200
tweaks: check for an empty needle in a central place
Searching for an empty string should be impossible, it should never
happen, but it is bit too hard to verify this at the moment.
Diffstat:
2 files changed, 5 insertions(+), 15 deletions(-)
diff --git 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
@@ -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;