have FreeMemoryLazyFree increment dict refcount so it doesn't try to use a dict that has already been released (#199)
This commit is contained in:
parent
8242ba5b47
commit
2adf93ba0e
@ -483,6 +483,7 @@ public:
|
|||||||
for (auto de : pair.second) {
|
for (auto de : pair.second) {
|
||||||
dictFreeUnlinkedEntry(pair.first, de);
|
dictFreeUnlinkedEntry(pair.first, de);
|
||||||
}
|
}
|
||||||
|
dictRelease(pair.first);
|
||||||
}
|
}
|
||||||
aeReleaseLock();
|
aeReleaseLock();
|
||||||
--s_clazyFreesInProgress;
|
--s_clazyFreesInProgress;
|
||||||
@ -513,6 +514,7 @@ public:
|
|||||||
);
|
);
|
||||||
if (itr == vecdictvecde.end() || itr->first != d) {
|
if (itr == vecdictvecde.end() || itr->first != d) {
|
||||||
itr = vecdictvecde.insert(itr, std::make_pair(d, std::vector<dictEntry*>()));
|
itr = vecdictvecde.insert(itr, std::make_pair(d, std::vector<dictEntry*>()));
|
||||||
|
__atomic_fetch_add(&d->refcount, 1, __ATOMIC_ACQ_REL);
|
||||||
}
|
}
|
||||||
serverAssert(itr->first == d);
|
serverAssert(itr->first == d);
|
||||||
itr->second.push_back(de);
|
itr->second.push_back(de);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user