From b940b0d2c197841b0f648598ee782dbaf9e0a89b Mon Sep 17 00:00:00 2001 From: ssareta Date: Fri, 20 Mar 2026 10:04:52 +1300 Subject: screencopy: fix crash in screensharing toplevel with invalid handle (#13781) --- src/managers/screenshare/ScreenshareSession.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/managers/screenshare/ScreenshareSession.cpp') diff --git a/src/managers/screenshare/ScreenshareSession.cpp b/src/managers/screenshare/ScreenshareSession.cpp index 5557746c..8dbfc72a 100644 --- a/src/managers/screenshare/ScreenshareSession.cpp +++ b/src/managers/screenshare/ScreenshareSession.cpp @@ -9,10 +9,16 @@ using namespace Screenshare; CScreenshareSession::CScreenshareSession(PHLMONITOR monitor, wl_client* client) : m_type(SHARE_MONITOR), m_monitor(monitor), m_client(client) { + if UNLIKELY (!m_monitor) + return; + init(); } CScreenshareSession::CScreenshareSession(PHLWINDOW window, wl_client* client) : m_type(SHARE_WINDOW), m_window(window), m_client(client) { + if UNLIKELY (!m_window) + return; + m_listeners.windowDestroyed = m_window->m_events.unmap.listen([this]() { stop(); }); m_listeners.windowSizeChanged = m_window->m_events.resize.listen([this]() { calculateConstraints(); @@ -34,6 +40,9 @@ CScreenshareSession::CScreenshareSession(PHLWINDOW window, wl_client* client) : CScreenshareSession::CScreenshareSession(PHLMONITOR monitor, CBox captureRegion, wl_client* client) : m_type(SHARE_REGION), m_monitor(monitor), m_captureBox(captureRegion), m_client(client) { + if UNLIKELY (!m_monitor) + return; + init(); } -- cgit v1.2.3