]> git.saurik.com Git - redis.git/blobdiff - src/redis-check-dump.c
Produce the watchlog warning log in a way that is safer from a signal handler. Fix...
[redis.git] / src / redis-check-dump.c
index 3fc17b67ac1ad2395b34d28bf0fdab200af9ad93..42fe5181087a19be3ec0914fabc82dcaa0d38d49 100644 (file)
@@ -20,6 +20,7 @@
 #define REDIS_LIST_ZIPLIST 10
 #define REDIS_SET_INTSET 11
 #define REDIS_ZSET_ZIPLIST 12
+#define REDIS_HASH_ZIPLIST 13
 
 /* Objects encoding. Some kind of objects like Strings and Hashes can be
  * internally represented in multiple ways. The 'encoding' field of the object
@@ -136,7 +137,7 @@ int processHeader() {
     }
 
     dump_version = (int)strtol(buf + 5, NULL, 10);
-    if (dump_version < 1 || dump_version > 2) {
+    if (dump_version < 1 || dump_version > 4) {
         ERROR("Unknown RDB format version: %d\n", dump_version);
     }
     return 1;
@@ -384,6 +385,7 @@ int loadPair(entry *e) {
     case REDIS_LIST_ZIPLIST:
     case REDIS_SET_INTSET:
     case REDIS_ZSET_ZIPLIST:
+    case REDIS_HASH_ZIPLIST:
         if (!processStringObject(NULL)) {
             SHIFT_ERROR(offset, "Error reading entry value");
             return 0;
@@ -600,6 +602,7 @@ void process() {
             /* advance position */
             positions[0] = positions[1];
         }
+        free(entry.key);
     }
 
     /* because there is another potential error,