summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--st.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/st.c b/st.c
index 4af67caf56..1d04f605a7 100644
--- a/st.c
+++ b/st.c
@@ -869,8 +869,11 @@ st_strcasecmp(const char *s1, const char *s2)
while (1) {
c1 = (unsigned char)*s1++;
c2 = (unsigned char)*s2++;
- if (!c1) break;
- if (!c2) break;
+ if (c1 == '\0' || c2 == '\0') {
+ if (c1 != '\0') return 1;
+ if (c2 != '\0') return -1;
+ return 0;
+ }
if ((unsigned int)(c1 - 'A') <= ('Z' - 'A')) c1 += 'a' - 'A';
if ((unsigned int)(c2 - 'A') <= ('Z' - 'A')) c2 += 'a' - 'A';
if (c1 != c2) {
@@ -880,11 +883,6 @@ st_strcasecmp(const char *s1, const char *s2)
return -1;
}
}
- if (c1 != '\0')
- return 1;
- if (c2 != '\0')
- return -1;
- return 0;
}
int
@@ -895,8 +893,11 @@ st_strncasecmp(const char *s1, const char *s2, size_t n)
while (n--) {
c1 = (unsigned char)*s1++;
c2 = (unsigned char)*s2++;
- if (!c1) break;
- if (!c2) break;
+ if (c1 == '\0' || c2 == '\0') {
+ if (c1 != '\0') return 1;
+ if (c2 != '\0') return -1;
+ return 0;
+ }
if ((unsigned int)(c1 - 'A') <= ('Z' - 'A')) c1 += 'a' - 'A';
if ((unsigned int)(c2 - 'A') <= ('Z' - 'A')) c2 += 'a' - 'A';
if (c1 != c2) {
@@ -906,12 +907,6 @@ st_strncasecmp(const char *s1, const char *s2, size_t n)
return -1;
}
}
- if (n == 0)
- return 0;
- if (c1 != '\0')
- return 1;
- if (c2 != '\0')
- return -1;
return 0;
}