window: avoid uaf on updateWindow decos

TODO, make these pointers SP to avoid this in the future.

fixes #5909
This commit is contained in:
Vaxry 2024-05-07 16:50:30 +01:00
parent 6ccc22194c
commit 598bbd186b
2 changed files with 3 additions and 0 deletions

View file

@ -211,6 +211,8 @@ void CWindow::updateWindowDecos() {
} }
for (auto& wd : decos) { for (auto& wd : decos) {
if (std::find_if(m_dWindowDecorations.begin(), m_dWindowDecorations.end(), [wd](const auto& other) { return other.get() == wd; }) == m_dWindowDecorations.end())
continue;
wd->updateWindow(m_pSelf.lock()); wd->updateWindow(m_pSelf.lock());
} }
} }

View file

@ -332,6 +332,7 @@ class CWindow {
PHLWINDOWREF m_pLastCycledWindow; PHLWINDOWREF m_pLastCycledWindow;
// Window decorations // Window decorations
// TODO: make this a SP.
std::deque<std::unique_ptr<IHyprWindowDecoration>> m_dWindowDecorations; std::deque<std::unique_ptr<IHyprWindowDecoration>> m_dWindowDecorations;
std::vector<IHyprWindowDecoration*> m_vDecosToRemove; std::vector<IHyprWindowDecoration*> m_vDecosToRemove;