]> git.saurik.com Git - redis.git/commitdiff
zipmaps are now endianess agnostic, needed for on disk serialization of zipmaps witho...
authorantirez <antirez@gmail.com>
Wed, 9 Mar 2011 16:31:02 +0000 (17:31 +0100)
committerantirez <antirez@gmail.com>
Wed, 9 Mar 2011 16:31:02 +0000 (17:31 +0100)
src/Makefile
src/endian.h
src/zipmap.c

index 4d0f86db9886ab109a5aacd51d7a25c368198cc7..acbc9b5f0ab80568ad5c9840d8b7bee05bc015c1 100644 (file)
@@ -25,7 +25,7 @@ PREFIX= /usr/local
 INSTALL_BIN= $(PREFIX)/bin
 INSTALL= cp -p
 
-OBJ = adlist.o ae.o anet.o dict.o redis.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o config.o aof.o dscache.o pubsub.o multi.o debug.o sort.o intset.o syncio.o diskstore.o
+OBJ = adlist.o ae.o anet.o dict.o redis.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o config.o aof.o dscache.o pubsub.o multi.o debug.o sort.o intset.o syncio.o diskstore.o endian.o
 BENCHOBJ = ae.o anet.o redis-benchmark.o sds.o adlist.o zmalloc.o
 CLIOBJ = anet.o sds.o adlist.o redis-cli.o zmalloc.o release.o
 CHECKDUMPOBJ = redis-check-dump.o lzf_c.o lzf_d.o
index 327cc570d500e1fb5a183d523f9beca4ac0284f5..bef822727495bb046e792fdd05e24912a9cb6ee0 100644 (file)
@@ -16,3 +16,5 @@ void memrev64(void *p);
 #define memrev32ifbe(p) memrev32(p)
 #define memrev64ifbe(p) memrev64(p)
 #endif
+
+#endif
index 693db7b9300278e14f42177a1ed09e76af94729c..9f0fc71815819ea17605ebd904ee4e6ed8157ac0 100644 (file)
@@ -80,6 +80,7 @@
 #include <string.h>
 #include <assert.h>
 #include "zmalloc.h"
+#include "endian.h"
 
 #define ZIPMAP_BIGLEN 254
 #define ZIPMAP_END 255
@@ -108,6 +109,7 @@ static unsigned int zipmapDecodeLength(unsigned char *p) {
 
     if (len < ZIPMAP_BIGLEN) return len;
     memcpy(&len,p+1,sizeof(unsigned int));
+    memrev32ifbe(&len);
     return len;
 }
 
@@ -123,6 +125,7 @@ static unsigned int zipmapEncodeLength(unsigned char *p, unsigned int len) {
         } else {
             p[0] = ZIPMAP_BIGLEN;
             memcpy(p+1,&len,sizeof(len));
+            memrev32ifbe(p+1);
             return 1+sizeof(len);
         }
     }