From 4092d983ea581e095932294dafd2e56674c297ce Mon Sep 17 00:00:00 2001 From: scuzqy Date: Sun, 25 Feb 2024 00:41:02 +0800 Subject: [PATCH] Fix: Accessing member of deleted objects --- src/windows/windriver.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/windows/windriver.h b/src/windows/windriver.h index c7b10140..1e162fc4 100644 --- a/src/windows/windriver.h +++ b/src/windows/windriver.h @@ -107,7 +107,8 @@ class Driver if (err == ERROR_SERVICE_ALREADY_RUNNING) return true; std::wcerr << "Starting MSR service failed with error " << err << " "; - const TCHAR * errorStr = _com_error(err).ErrorMessage(); + const _com_error comError{ (int)err }; + const TCHAR * errorStr = comError.ErrorMessage(); if (errorStr) std::wcerr << errorStr << "\n"; @@ -120,7 +121,8 @@ class Driver else { std::wcerr << "Opening service manager failed with error " << GetLastError() << " "; - const TCHAR * errorStr = _com_error(GetLastError()).ErrorMessage(); + const _com_error comError{ (int)GetLastError() }; + const TCHAR * errorStr = comError.ErrorMessage(); if (errorStr) std::wcerr << errorStr << "\n"; } @@ -130,7 +132,8 @@ class Driver else { std::wcerr << "Opening service manager failed with error " << GetLastError() << " "; - const TCHAR * errorStr = _com_error(GetLastError()).ErrorMessage(); + const _com_error comError{ (int)GetLastError() }; + const TCHAR * errorStr = comError.ErrorMessage(); if (errorStr) std::wcerr << errorStr << "\n"; } @@ -169,7 +172,8 @@ class Driver else { std::wcerr << "Opening service manager failed with error " << GetLastError() << " "; - const TCHAR * errorStr = _com_error(GetLastError()).ErrorMessage(); + const _com_error comError{ (int)GetLastError() }; + const TCHAR * errorStr = comError.ErrorMessage(); if (errorStr) std::wcerr << errorStr; } @@ -197,7 +201,8 @@ class Driver else { std::wcerr << "Opening service manager failed with error " << GetLastError() << " "; - const TCHAR * errorStr = _com_error(GetLastError()).ErrorMessage(); + const _com_error comError{ (int)GetLastError() }; + const TCHAR * errorStr = comError.ErrorMessage(); if (errorStr) std::wcerr << errorStr; }