[PATCH 3/3 (try2)] shell32: Use a helper function to allocate strings from the registry
Andrew Eikum
aeikum at codeweavers.com
Fri Feb 27 09:01:43 CST 2015
---
dlls/shell32/shellpath.c | 37 ++++++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index caf6777..d33091d 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -3194,6 +3194,29 @@ static HRESULT get_known_folder_registry_path(
return hr;
}
+static HRESULT get_known_folder_wstr(const WCHAR *regpath, const WCHAR *value, WCHAR **out)
+{
+ DWORD size = 0;
+ HRESULT hr;
+
+ size = 0;
+ hr = HRESULT_FROM_WIN32(RegGetValueW(HKEY_LOCAL_MACHINE, regpath, value, RRF_RT_REG_SZ, NULL, NULL, &size));
+ if(FAILED(hr))
+ return hr;
+
+ *out = CoTaskMemAlloc(size);
+ if(!*out)
+ return E_OUTOFMEMORY;
+
+ hr = HRESULT_FROM_WIN32(RegGetValueW(HKEY_LOCAL_MACHINE, regpath, value, RRF_RT_REG_SZ, NULL, *out, &size));
+ if(FAILED(hr)){
+ CoTaskMemFree(*out);
+ *out = NULL;
+ }
+
+ return hr;
+}
+
static HRESULT get_known_folder_dword(const WCHAR *registryPath, const WCHAR *value, DWORD *out)
{
DWORD dwSize = sizeof(DWORD);
@@ -3660,7 +3683,6 @@ static HRESULT WINAPI knownfolder_GetFolderDefinition(
{
struct knownfolder *knownfolder = impl_from_IKnownFolder( iface );
HRESULT hr;
- DWORD dwSize;
TRACE("(%p, %p)\n", knownfolder, pKFD);
if(!pKFD) return E_INVALIDARG;
@@ -3671,21 +3693,10 @@ static HRESULT WINAPI knownfolder_GetFolderDefinition(
if(FAILED(hr))
return hr;
- hr = HRESULT_FROM_WIN32(RegGetValueW(HKEY_LOCAL_MACHINE, knownfolder->registryPath, szName, RRF_RT_REG_SZ, NULL, NULL, &dwSize));
+ hr = get_known_folder_wstr(knownfolder->registryPath, szName, &pKFD->pszName);
if(FAILED(hr))
return hr;
- pKFD->pszName = CoTaskMemAlloc(dwSize);
- if(!pKFD->pszName)
- return E_OUTOFMEMORY;
-
- hr = HRESULT_FROM_WIN32(RegGetValueW(HKEY_LOCAL_MACHINE, knownfolder->registryPath, szName, RRF_RT_REG_SZ, NULL, pKFD->pszName, &dwSize));
- if(FAILED(hr)){
- CoTaskMemFree(pKFD->pszName);
- pKFD->pszName = NULL;
- return hr;
- }
-
return S_OK;
}
--
2.3.1
More information about the wine-patches
mailing list