diff --git a/src/chars.c b/src/chars.c
index 8eed0e54571e08e34eadf7765ec6376ab5e193b5..80904213de489df5d4bcc976b7c22e491cedfe7a 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -514,7 +514,6 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
 
 	while (*s1 != '\0' && *s2 != '\0' && n > 0) {
 	    bool bad1 = FALSE, bad2 = FALSE;
-	    int difference;
 
 	    if (mbtowc(&wc1, s1, MB_CUR_MAX) < 0) {
 		mbtowc_reset();
@@ -532,16 +531,13 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
 
 		if (bad1 != bad2)
 		    return (bad1 ? 1 : -1);
+	    } else {
+		int difference = towlower(wc1) - towlower(wc2);
 
-		s1++; s2++; n--;
-		continue;
+		if (difference != 0)
+		    return difference;
 	    }
 
-	    difference = towlower(wc1) - towlower(wc2);
-
-	    if (difference != 0)
-		return difference;
-
 	    s1 += move_mbright(s1, 0);
 	    s2 += move_mbright(s2, 0);
 	    n--;