From cd705a7c4c3db6c8ed7395c85e76ff7edc9ff6b1 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Sun, 18 Dec 2016 21:45:47 +0100
Subject: [PATCH] tweaks: elide a counter and a comparison

For clarity and a tiny bit more speed.  Also rename some variables.
---
 src/chars.c | 24 ++++++++++++------------
 src/proto.h |  4 ++--
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/chars.c b/src/chars.c
index d2088bd2..8079317b 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -577,25 +577,25 @@ char *mbstrcasestr(const char *haystack, const char *needle)
 
 /* This function is equivalent to strstr(), except in that it scans the
  * string in reverse, starting at rev_start. */
-char *revstrstr(const char *haystack, const char *needle, const char
-	*rev_start)
+char *revstrstr(const char *haystack, const char *needle,
+	const char *pointer)
 {
-    size_t rev_start_len, needle_len;
+    size_t needle_len = strlen(needle);
+    size_t tail_len = strlen(pointer);
 
-    if (*needle == '\0')
-	return (char *)rev_start;
-
-    needle_len = strlen(needle);
+    if (needle_len == 0)
+	return (char *)pointer;
 
     if (strlen(haystack) < needle_len)
 	return NULL;
 
-    rev_start_len = strlen(rev_start);
+    if (tail_len < needle_len)
+	pointer += tail_len - needle_len;
 
-    for (; rev_start >= haystack; rev_start--, rev_start_len++) {
-	if (rev_start_len >= needle_len && strncmp(rev_start, needle,
-		needle_len) == 0)
-	    return (char *)rev_start;
+    while (pointer >= haystack) {
+	if (strncmp(pointer, needle, needle_len) == 0)
+	    return (char *)pointer;
+	pointer--;
     }
 
     return NULL;
diff --git a/src/proto.h b/src/proto.h
index cc9dd208..c4986810 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -227,8 +227,8 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n);
 char *nstrcasestr(const char *haystack, const char *needle);
 #endif
 char *mbstrcasestr(const char *haystack, const char *needle);
-char *revstrstr(const char *haystack, const char *needle, const char
-	*rev_start);
+char *revstrstr(const char *haystack, const char *needle,
+	const char *pointer);
 char *revstrcasestr(const char *haystack, const char *needle, const char
 	*rev_start);
 char *mbrevstrcasestr(const char *haystack, const char *needle, const
-- 
GitLab