From bf219416868479b8324e7bc1552611dfd28a56b9 Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Fri, 4 May 2012 17:26:24 -0700 Subject: [PATCH 1/1] Compare integers in ziplist regardless of encoding Because of the introduction of new integer encoding types for ziplists in the 2.6 tree, the same integer value may have a different encoding in different versions of the ziplist implementation. This means that the encoding can NOT be used as a fast path in comparing integers. --- src/ziplist.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/ziplist.c b/src/ziplist.c index e3741f81..31e61633 100644 --- a/src/ziplist.c +++ b/src/ziplist.c @@ -773,12 +773,11 @@ unsigned int ziplistCompare(unsigned char *p, unsigned char *sstr, unsigned int return 0; } } else { - /* Try to compare encoded values */ + /* Try to compare encoded values. Don't compare encoding because + * different implementations may encoded integers differently. */ if (zipTryEncoding(sstr,slen,&sval,&sencoding)) { - if (entry.encoding == sencoding) { - zval = zipLoadInteger(p+entry.headersize,entry.encoding); - return zval == sval; - } + zval = zipLoadInteger(p+entry.headersize,entry.encoding); + return zval == sval; } } return 0; -- 2.45.2