From 15013bb0894c71cd068be251f39ddf87071b633f Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Wed, 12 Aug 2020 13:55:42 -0400 Subject: correctly return 0 if all bytes up to n are the same --- src/string/memcmp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/string/memcmp.c b/src/string/memcmp.c index f0c1e2da..eaf4cf40 100644 --- a/src/string/memcmp.c +++ b/src/string/memcmp.c @@ -4,8 +4,8 @@ /** compare memory regions **/ int memcmp(const void *s1, const void *s2, size_t n) { - unsigned char *p = (unsigned char*)s1; - unsigned char *q = (unsigned char*)s2; + unsigned char *p = (void*)s1; + unsigned char *q = (void*)s2; size_t i = 0; ASSERT_NONNULL(s1); @@ -13,7 +13,7 @@ int memcmp(const void *s1, const void *s2, size_t n) for (i = 0; i < n; i++) { if (p[i] != q[i]) { - break; + return p[i] - q[i]; } } @@ -22,7 +22,7 @@ int memcmp(const void *s1, const void *s2, size_t n) RETURN(ZERO, ARGUMENT(s1) and ARGUMENT(s2) are equal); RETURN(POSITIVE(), ARGUMENT(s1) is greater than ARGUMENT(s2)); */ - return p[i] - q[i]; + return 0; } /*** -- cgit v1.2.1