From 9797d4a8f22b82863d00d9d0efc9aefad8445b55 Mon Sep 17 00:00:00 2001 From: John Sully Date: Mon, 15 Jun 2020 19:47:06 -0400 Subject: [PATCH] Fix crash in async delete when storage provider is not set and key doesn't actually exist Former-commit-id: 4a4828390118ab52851d8bf229c4ae853100053c --- src/lazyfree.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lazyfree.cpp b/src/lazyfree.cpp index 6bca4481b..141df38f2 100644 --- a/src/lazyfree.cpp +++ b/src/lazyfree.cpp @@ -60,9 +60,10 @@ bool redisDbPersistentData::asyncDelete(robj *key) { return syncDelete(key); // async delte never makes sense with a storage provider 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 (m_pdbSnapshot != nullptr && m_pdbSnapshot->find_cached_threadsafe(szFromObj(key)) != nullptr) + dictAdd(m_pdictTombstone, sdsdup((sds)dictGetKey(de)), nullptr); + robj *val = (robj*)dictGetVal(de); if (val->FExpires()) {