3030
3131#include " reg.h"
3232
33- #include < QScopeGuard>
33+ #include < memory>
34+
3435#include < QStringList>
3536
3637QStringList 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