Module: wine Branch: master Commit: 9b1e1b2aadcdebf09ef306677844701d6177cf82 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9b1e1b2aadcdebf09ef3066778...
Author: Juan Lang juan.lang@gmail.com Date: Fri Sep 21 11:33:05 2007 -0700
setupapi: Set last error on failure in SetupDiOpenClassRegKeyExW.
---
dlls/setupapi/devinst.c | 42 +++++++++++++++++++++++------------------- 1 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index a91b120..c2644e2 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -2338,8 +2338,9 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW( PVOID Reserved) { HKEY hClassesKey; - HKEY hClassKey; + HKEY key; LPCWSTR lpKeyName; + LONG l;
if (MachineName != NULL) { @@ -2364,15 +2365,16 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
if (!ClassGuid) { - if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + if ((l = RegOpenKeyExW(HKEY_LOCAL_MACHINE, lpKeyName, 0, samDesired, - &hClassesKey)) + &hClassesKey))) { - return INVALID_HANDLE_VALUE; + SetLastError(l); + hClassesKey = INVALID_HANDLE_VALUE; } - return hClassesKey; + key = hClassesKey; } else { @@ -2380,28 +2382,30 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
SETUPDI_GuidToString(ClassGuid, bracedGuidString);
- if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + if (!(l = RegOpenKeyExW(HKEY_LOCAL_MACHINE, lpKeyName, 0, samDesired, - &hClassesKey)) + &hClassesKey))) { - return INVALID_HANDLE_VALUE; + if ((l = RegOpenKeyExW(hClassesKey, + bracedGuidString, + 0, + samDesired, + &key))) + { + SetLastError(l); + key = INVALID_HANDLE_VALUE; + } + RegCloseKey(hClassesKey); } - if (RegOpenKeyExW(hClassesKey, - bracedGuidString, - 0, - samDesired, - &hClassKey)) + else { - RegCloseKey(hClassesKey); - return INVALID_HANDLE_VALUE; + SetLastError(l); + key = INVALID_HANDLE_VALUE; } - - RegCloseKey(hClassesKey); - - return hClassKey; } + return key; }
/***********************************************************************