[crypt32 2/5] Bail out on registry errors and return the error (if any)

Paul Vriens Paul.Vriens at xs4all.nl
Fri Sep 8 06:18:55 CDT 2006


Hi,

again, testing on native shows that we should bail out and report any registry
errors.

Changelog
  Bail out on registry errors and return the error (if any)

Cheers,

Paul.
---
 dlls/crypt32/main.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/crypt32/main.c b/dlls/crypt32/main.c
index 86b9cf4..6f26943 100644
--- a/dlls/crypt32/main.c
+++ b/dlls/crypt32/main.c
@@ -131,7 +131,7 @@ static LONG CRYPT_SIPWriteFunction( LPGU
     static const WCHAR szDllName[] = { 'D','l','l',0 };
     static const WCHAR szFuncName[] = { 'F','u','n','c','N','a','m','e',0 };
     WCHAR szFullKey[ 0x100 ];
-    LONG r;
+    LONG r = ERROR_SUCCESS;
     HKEY hKey;
 
     if( !szFunction )
@@ -147,18 +147,20 @@ static LONG CRYPT_SIPWriteFunction( LPGU
     TRACE("key is %s\n", debugstr_w( szFullKey ) );
 
     r = RegCreateKeyW( HKEY_LOCAL_MACHINE, szFullKey, &hKey );
-    if( r != ERROR_SUCCESS )
-        return r;
+    if( r != ERROR_SUCCESS ) goto error_close_key;
 
     /* write the values */
-    RegSetValueExW( hKey, szFuncName, 0, REG_SZ, (const BYTE*) szFunction,
-                    ( lstrlenW( szFunction ) + 1 ) * sizeof (WCHAR) );
-    RegSetValueExW( hKey, szDllName, 0, REG_SZ, (const BYTE*) szDll,
-                    ( lstrlenW( szDll ) + 1) * sizeof (WCHAR) );
+    r = RegSetValueExW( hKey, szFuncName, 0, REG_SZ, (const BYTE*) szFunction,
+                        ( lstrlenW( szFunction ) + 1 ) * sizeof (WCHAR) );
+    if( r != ERROR_SUCCESS ) goto error_close_key;
+    r = RegSetValueExW( hKey, szDllName, 0, REG_SZ, (const BYTE*) szDll,
+                        ( lstrlenW( szDll ) + 1) * sizeof (WCHAR) );
+
+error_close_key:
 
     RegCloseKey( hKey );
 
-    return ERROR_SUCCESS;
+    return r;
 }
 
 BOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *psNewProv)
-- 
1.4.2




More information about the wine-patches mailing list