From 147c000ef1478e305ed78e525a1184c2e08910a7 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sat, 6 May 2017 22:14:53 -0400 Subject: [PATCH] Corrected nullptr crash on Windows when going to sleep --- src/core/ScreenLockListenerWin.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/ScreenLockListenerWin.cpp b/src/core/ScreenLockListenerWin.cpp index 21c59c72..4aae8a28 100644 --- a/src/core/ScreenLockListenerWin.cpp +++ b/src/core/ScreenLockListenerWin.cpp @@ -45,13 +45,18 @@ bool ScreenLockListenerWin::nativeEventFilter(const QByteArray &eventType, void if (eventType == "windows_generic_MSG" || eventType == "windows_dispatcher_MSG") { MSG* m = static_cast(message); if (m->message == WM_POWERBROADCAST) { - const POWERBROADCAST_SETTING* setting = reinterpret_cast(m->lParam); - if (setting->PowerSetting == GUID_LIDSWITCH_STATE_CHANGE) { - const DWORD* state = reinterpret_cast(&setting->Data); - if (*state == 0) { - Q_EMIT screenLocked(); - return true; + if (m->wParam == PBT_POWERSETTINGCHANGE) { + const POWERBROADCAST_SETTING* setting = reinterpret_cast(m->lParam); + if (setting != nullptr && setting->PowerSetting == GUID_LIDSWITCH_STATE_CHANGE) { + const DWORD* state = reinterpret_cast(&setting->Data); + if (*state == 0) { + Q_EMIT screenLocked(); + return true; + } } + } else if (m->wParam == PBT_APMSUSPEND) { + Q_EMIT screenLocked(); + return true; } } if (m->message == WM_WTSSESSION_CHANGE) {