[Libreoffice-commits] core.git: shell/source

Mike Kaganski mike.kaganski at collabora.com
Tue Apr 11 18:24:46 UTC 2017


 shell/source/win32/spsupp/registrar.cxx |   22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

New commits:
commit aa4e06c67dbe414ae26b757d6968eb27b5ebeb99
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Tue Apr 11 19:20:24 2017 +0300

    tdf#103058: use RegQueryValueEx instead of RegGetValue
    
    because the latter is unsupported on WinXP
    
    Change-Id: Ie922271ab837637d77f3d76c5144d10a7f5a5f0d
    Reviewed-on: https://gerrit.libreoffice.org/36416
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/shell/source/win32/spsupp/registrar.cxx b/shell/source/win32/spsupp/registrar.cxx
index 5ece3fcdd2d8..5d49efe7c88c 100644
--- a/shell/source/win32/spsupp/registrar.cxx
+++ b/shell/source/win32/spsupp/registrar.cxx
@@ -14,8 +14,28 @@ namespace {
 
     HRESULT RegRead(HKEY hRootKey, const wchar_t* subKey, const wchar_t* valName, wchar_t* valData, size_t cchData)
     {
+        HKEY hKey;
+        long iRetVal = RegCreateKeyExW(
+            hRootKey,
+            subKey,
+            0,
+            nullptr,
+            REG_OPTION_NON_VOLATILE,
+            KEY_READ,
+            nullptr,
+            &hKey,
+            nullptr);
+        if (iRetVal != ERROR_SUCCESS)
+            return HRESULT_FROM_WIN32(iRetVal);
+
         DWORD cbData = cchData * sizeof(valData[0]);
-        long iRetVal = RegGetValue(hRootKey, subKey, valName, RRF_RT_REG_SZ, nullptr, valData, &cbData);
+        DWORD dwType;
+        iRetVal = RegQueryValueExW(hKey, valName, nullptr, &dwType, reinterpret_cast<LPBYTE>(valData), &cbData);
+        RegCloseKey(hKey);
+        if ((iRetVal == ERROR_SUCCESS) && (dwType != REG_SZ))
+        {
+            return E_FAIL;
+        }
         return HRESULT_FROM_WIN32(iRetVal);
     }
 


More information about the Libreoffice-commits mailing list