From 54d2475f74f30be5e4ae476d9ac0df92f3e6ca12 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 17 Mar 2020 01:19:40 -0400 Subject: Fix endswith() not working correctly --- src/str.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/str.c') diff --git a/src/str.c b/src/str.c index fb7b4be..5db3adc 100644 --- a/src/str.c +++ b/src/str.c @@ -49,9 +49,22 @@ int endswith(const char *sptr, const char *pattern) { if (!sptr) { return -1; } - size_t sptr_size = strlen(sptr); - size_t pattern_size = strlen(pattern); - for (size_t s = sptr_size - pattern_size, p = 0 ; s < sptr_size; s++, p++) { + ssize_t sptr_size = strlen(sptr); + ssize_t pattern_size = strlen(pattern); + + if (sptr_size == pattern_size) { + if (strcmp(sptr, pattern) == 0) { + return 1; // yes + } + return 0; // no + } + + ssize_t s = sptr_size - pattern_size; + if (s < 0) { + return 0; + } + + for (size_t p = 0 ; s < sptr_size; s++, p++) { if (sptr[s] != pattern[p]) { // sptr does not end with pattern return 0; -- cgit