]> Savannah Git Hosting - gnulib.git/commitdiff
unistr/u8-cmp: Fix undefined behaviour.
authorBruno Haible <bruno@clisp.org>
Fri, 8 Mar 2019 19:38:22 +0000 (20:38 +0100)
committerBruno Haible <bruno@clisp.org>
Fri, 8 Mar 2019 23:04:42 +0000 (00:04 +0100)
Reported by Jeffrey Walton <noloader@gmail.com>.

* lib/unistr/u8-cmp.c (u8_cmp): Don't invoke memcmp if n is zero.

ChangeLog
lib/unistr/u8-cmp.c

index 2e6126105d311acbe42fb0248b71b1c2b69fa70d..074b1caca4758545b94b2f5e6b161b2130319981 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-03-08  Bruno Haible  <bruno@clisp.org>
+
+       unistr/u8-cmp: Fix undefined behaviour.
+       Reported by Jeffrey Walton <noloader@gmail.com>.
+       * lib/unistr/u8-cmp.c (u8_cmp): Don't invoke memcmp if n is zero.
+
 2019-03-08  Bruno Haible  <bruno@clisp.org>
 
        unictype/numeric: Fix undefined behaviour.
index bd2f11bea996d065dbafa3993d00ff86a8a4ca3a..5349ec63d09cf70ddea6049610829032cddd299c 100644 (file)
@@ -26,5 +26,5 @@ int
 u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n)
 {
   /* Use the fact that the UTF-8 encoding preserves lexicographic order.  */
-  return memcmp ((const char *) s1, (const char *) s2, n);
+  return n == 0 ? 0 : memcmp ((const char *) s1, (const char *) s2, n);
 }