提交 357d3673 编写于 作者: A antirez

Fixed segfault in freeMemoryIfNeeded due to the fact that keys are now sds...

Fixed segfault in freeMemoryIfNeeded due to the fact that keys are now sds strings and not objects in the main hash table, thanks to Anthony Lauzon for spotting the bug and providing a patch.
上级 2df84b72
......@@ -1321,7 +1321,8 @@ void freeMemoryIfNeeded(void) {
if (tryFreeOneObjectFromFreelist() == REDIS_OK) continue;
for (j = 0; j < server.dbnum; j++) {
int minttl = -1;
robj *minkey = NULL;
sds minkey = NULL;
robj *keyobj = NULL;
struct dictEntry *de;
if (dictSize(server.db[j].expires)) {
......@@ -1338,7 +1339,9 @@ void freeMemoryIfNeeded(void) {
minttl = t;
}
}
dbDelete(server.db+j,minkey);
keyobj = createStringObject(minkey,sdslen(minkey));
dbDelete(server.db+j,keyobj);
decrRefCount(keyobj);
}
}
if (!freed) return; /* nothing to free... */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册