Fix crash in async delete when storage provider is not set and key doesn't actually exist

Former-commit-id: 4a4828390118ab52851d8bf229c4ae853100053c
This commit is contained in:
John Sully 2020-06-15 19:47:06 -04:00
parent 4e609863b6
commit 9797d4a8f2

View File

@ -60,9 +60,10 @@ bool redisDbPersistentData::asyncDelete(robj *key) {
return syncDelete(key); // async delte never makes sense with a storage provider return syncDelete(key); // async delte never makes sense with a storage provider
dictEntry *de = dictUnlink(m_pdict,ptrFromObj(key)); dictEntry *de = dictUnlink(m_pdict,ptrFromObj(key));
if (m_pdbSnapshot != nullptr && m_pdbSnapshot->find_cached_threadsafe(szFromObj(key)) != nullptr)
dictAdd(m_pdictTombstone, sdsdup((sds)dictGetKey(de)), nullptr);
if (de) { if (de) {
if (m_pdbSnapshot != nullptr && m_pdbSnapshot->find_cached_threadsafe(szFromObj(key)) != nullptr)
dictAdd(m_pdictTombstone, sdsdup((sds)dictGetKey(de)), nullptr);
robj *val = (robj*)dictGetVal(de); robj *val = (robj*)dictGetVal(de);
if (val->FExpires()) if (val->FExpires())
{ {