Skip to content

Commit 378f8f9

Browse files
authored
Prefer unique pointer over scope guard
PR #24630.
1 parent cb6e637 commit 378f8f9

1 file changed

Lines changed: 11 additions & 13 deletions

File tree

src/base/utils/reg.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030

3131
#include "reg.h"
3232

33-
#include <QScopeGuard>
33+
#include <memory>
34+
3435
#include <QStringList>
3536

3637
QStringList Utils::Reg::getSubkeys(const HKEY handle)
@@ -44,17 +45,15 @@ QStringList Utils::Reg::getSubkeys(const HKEY handle)
4445
if (result == ERROR_SUCCESS)
4546
{
4647
++cMaxSubKeyLen; // For null character
47-
LPWSTR lpName = new WCHAR[cMaxSubKeyLen] {0};
48-
[[maybe_unused]] const auto lpNameGuard = qScopeGuard([&lpName] { delete[] lpName; });
49-
48+
const auto lpName = std::make_unique<WCHAR[]>(cMaxSubKeyLen);
5049
keys.reserve(cSubKeys);
5150

5251
for (DWORD i = 0; i < cSubKeys; ++i)
5352
{
5453
DWORD cName = cMaxSubKeyLen;
55-
const LSTATUS res = ::RegEnumKeyExW(handle, i, lpName, &cName, NULL, NULL, NULL, NULL);
54+
const LSTATUS res = ::RegEnumKeyExW(handle, i, lpName.get(), &cName, NULL, NULL, NULL, NULL);
5655
if (res == ERROR_SUCCESS)
57-
keys.append(QString::fromWCharArray(lpName));
56+
keys.append(QString::fromWCharArray(lpName.get()));
5857
}
5958
}
6059

@@ -66,19 +65,18 @@ QString Utils::Reg::getStringValue(const HKEY handle, const QString &name)
6665
const std::wstring nameWStr = name.toStdWString();
6766
DWORD type = 0;
6867
DWORD cbData = 0;
68+
6969
// Discover the size of the value
7070
::RegQueryValueExW(handle, nameWStr.c_str(), NULL, &type, NULL, &cbData);
71-
72-
const DWORD cBuffer = (cbData / sizeof(WCHAR)) + 1;
73-
LPWSTR lpData = new WCHAR[cBuffer] {};
74-
[[maybe_unused]] const auto lpDataGuard = qScopeGuard([&lpData] { delete[] lpData; });
75-
7671
if (!((type == REG_SZ) || (type == REG_EXPAND_SZ)))
7772
return {};
7873

79-
const LSTATUS res = ::RegQueryValueExW(handle, nameWStr.c_str(), NULL, &type, reinterpret_cast<LPBYTE>(lpData), &cbData);
74+
const int cBuffer = (cbData / sizeof(WCHAR)) + 1;
75+
const auto lpData = std::make_unique<WCHAR[]>(cBuffer);
76+
77+
const LSTATUS res = ::RegQueryValueExW(handle, nameWStr.c_str(), NULL, &type, reinterpret_cast<LPBYTE>(lpData.get()), &cbData);
8078
if (res == ERROR_SUCCESS)
81-
return QString::fromWCharArray(lpData);
79+
return QString::fromWCharArray(lpData.get());
8280

8381
return {};
8482
}

0 commit comments

Comments
 (0)