summaryrefslogtreecommitdiffhomepage
path: root/windows/driverlogic/src/driverlogic.cpp
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2020-06-15 09:21:35 +0200
committerDavid Lönnhager <david.l@mullvad.net>2020-06-15 09:34:24 +0200
commit6afde5381922d893a3513842d53340c9e8b2ec9d (patch)
treea49dfb4d88a41208a694f64084ec01299dc25474 /windows/driverlogic/src/driverlogic.cpp
parent9bd9c061022163a291d3dc7ae01f7589bfa60848 (diff)
downloadmullvadvpn-6afde5381922d893a3513842d53340c9e8b2ec9d.tar.xz
mullvadvpn-6afde5381922d893a3513842d53340c9e8b2ec9d.zip
Only create the event if we need it in driverlogic
Diffstat (limited to 'windows/driverlogic/src/driverlogic.cpp')
-rw-r--r--windows/driverlogic/src/driverlogic.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/windows/driverlogic/src/driverlogic.cpp b/windows/driverlogic/src/driverlogic.cpp
index 450e08f821..989ee70cf5 100644
--- a/windows/driverlogic/src/driverlogic.cpp
+++ b/windows/driverlogic/src/driverlogic.cpp
@@ -244,16 +244,14 @@ bool TryGetRegistryValueTimeout(
DWORD *dataSize
)
{
- HANDLE changeEvent = CreateEventW(nullptr, FALSE, FALSE, nullptr);
-
- if (nullptr == changeEvent)
- {
- THROW_WINDOWS_ERROR(GetLastError(), "CreateEventW");
- }
+ HANDLE changeEvent = nullptr;
common::memory::ScopeDestructor scopeDestructor;
scopeDestructor += [changeEvent]() {
- CloseHandle(changeEvent);
+ if (nullptr != changeEvent)
+ {
+ CloseHandle(changeEvent);
+ }
};
auto initialTime = std::chrono::steady_clock::now();
@@ -273,6 +271,16 @@ bool TryGetRegistryValueTimeout(
THROW_WINDOWS_ERROR(status, "RegGetValueW");
}
+ if (nullptr == changeEvent)
+ {
+ changeEvent = CreateEventW(nullptr, FALSE, FALSE, nullptr);
+
+ if (nullptr == changeEvent)
+ {
+ THROW_WINDOWS_ERROR(GetLastError(), "CreateEventW");
+ }
+ }
+
//
// Wait for the registry value to be created
//