diff options
author | antirez <antirez@gmail.com> | 2018-05-09 12:06:37 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2018-05-09 12:06:37 +0200 |
commit | b85aae78dfad8cf49b1056ee598c1846252a2ef3 (patch) | |
tree | de5c9b0f2b9e9937082075ec3e723d14fb43697d | |
parent | cd87b3c71f79062d9e95abada186e1cac03f5cc6 (diff) | |
download | redis-b85aae78dfad8cf49b1056ee598c1846252a2ef3.tar.gz |
Fix rdb.c dictionary iterator release in 2 more places.
-rw-r--r-- | src/rdb.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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) { |