fix: don't free ptr removed from Entry::m_windowInfoMap

Check comment.

Signed-off-by: black-desk <me@black-desk.cn>
This commit is contained in:
black-desk 2023-05-12 11:24:35 +08:00 committed by 爱折腾的小竹同学
parent ad07a96240
commit a2f91cc525

View File

@ -473,9 +473,15 @@ bool Entry::detachWindow(WindowInfoBase *info)
info->setEntry(nullptr); info->setEntry(nullptr);
XWindow winId = info->getXid(); XWindow winId = info->getXid();
if (m_windowInfoMap.contains(winId)) { if (m_windowInfoMap.contains(winId)) {
WindowInfoBase *info = m_windowInfoMap[winId]; // WARN(black_desk): Address sanitizer report Dock::m_activeWindow use
// this pointer after free here.
// After comment out the delete, leak sanitizer report nothing. So I
// believe this pointer is free somewhere else.
// WindowInfoBase *info = m_windowInfoMap[winId];
m_windowInfoMap.remove(winId); m_windowInfoMap.remove(winId);
delete info; // delete info;
} }
if (m_windowInfoMap.isEmpty()) { if (m_windowInfoMap.isEmpty()) {