]> git.sur5r.net Git - openldap/commitdiff
Fix memncmp(): Do not memcmp twice
authorHallvard B Furuseth <h.b.furuseth@usit.uio.no>
Wed, 29 Jun 2011 16:59:53 +0000 (18:59 +0200)
committerHallvard B Furuseth <h.b.furuseth@usit.uio.no>
Wed, 29 Jun 2011 20:26:32 +0000 (22:26 +0200)
libraries/libmdb/mdb.c

index 426d6d178b581422cc6017da053b5551992ef32e..ad08e9db3e5090c101f80a79aca817975c615860 100644 (file)
@@ -333,15 +333,14 @@ static int                 memnrcmp(const void *s1, size_t n1,
 static int
 memncmp(const void *s1, size_t n1, const void *s2, size_t n2)
 {
-       if (n1 < n2) {
-               if (memcmp(s1, s2, n1) == 0)
-                       return -1;
-       }
-       else if (n1 > n2) {
-               if (memcmp(s1, s2, n2) == 0)
-                       return 1;
+       int diff, len_diff = -1;
+
+       if (n1 >= n2) {
+               len_diff = (n1 > n2);
+               n1 = n2;
        }
-       return memcmp(s1, s2, n1);
+       diff = memcmp(s1, s2, n1);
+       return diff ? diff : len_diff;
 }
 
 static int