summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2018-05-09 12:06:37 +0200
committerantirez <antirez@gmail.com>2018-05-09 12:06:37 +0200
commitb85aae78dfad8cf49b1056ee598c1846252a2ef3 (patch)
treede5c9b0f2b9e9937082075ec3e723d14fb43697d
parentcd87b3c71f79062d9e95abada186e1cac03f5cc6 (diff)
downloadredis-b85aae78dfad8cf49b1056ee598c1846252a2ef3.tar.gz
Fix rdb.c dictionary iterator release in 2 more places.
-rw-r--r--src/rdb.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/rdb.c b/src/rdb.c
index 728a1c216..d77a689af 100644
--- a/src/rdb.c
+++ b/src/rdb.c
@@ -772,7 +772,10 @@ ssize_t rdbSaveObject(rio *rdb, robj *o) {
dictIterator *di = dictGetIterator(set);
dictEntry *de;
- if ((n = rdbSaveLen(rdb,dictSize(set))) == -1) return -1;
+ if ((n = rdbSaveLen(rdb,dictSize(set))) == -1) {
+ dictReleaseIterator(di);
+ return -1;
+ }
nwritten += n;
while((de = dictNext(di)) != NULL) {
@@ -842,7 +845,10 @@ ssize_t rdbSaveObject(rio *rdb, robj *o) {
dictIterator *di = dictGetIterator(o->ptr);
dictEntry *de;
- if ((n = rdbSaveLen(rdb,dictSize((dict*)o->ptr))) == -1) return -1;
+ if ((n = rdbSaveLen(rdb,dictSize((dict*)o->ptr))) == -1) {
+ dictReleaseIterator(di);
+ return -1;
+ }
nwritten += n;
while((de = dictNext(di)) != NULL) {