Module: wine Branch: master Commit: 58a698882d7f048e642bfccba65edcac98bd3a40 URL: http://source.winehq.org/git/wine.git/?a=commit;h=58a698882d7f048e642bfccba6...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jun 21 16:56:12 2010 +0200
advapi32: Make rpcrt4 a delayed import to work around circular dependencies with native.
---
dlls/advapi32/Makefile.in | 3 +- dlls/advapi32/crypt.c | 56 ++++++++++++++++++-------------------------- 2 files changed, 25 insertions(+), 34 deletions(-)
diff --git a/dlls/advapi32/Makefile.in b/dlls/advapi32/Makefile.in index a3d0efc..d880360 100644 --- a/dlls/advapi32/Makefile.in +++ b/dlls/advapi32/Makefile.in @@ -5,7 +5,8 @@ SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = advapi32.dll IMPORTLIB = advapi32 -IMPORTS = rpcrt4 kernel32 ntdll +IMPORTS = kernel32 ntdll +DELAYIMPORTS = rpcrt4 EXTRALIBS = @SECURITYLIB@
C_SRCS = \ diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c index bb019d0..4235e83 100644 --- a/dlls/advapi32/crypt.c +++ b/dlls/advapi32/crypt.c @@ -284,40 +284,30 @@ static void CRYPT_CreateMachineGuid(void) r = RegQueryValueExW(key, machineGuidW, NULL, NULL, NULL, &size); if (r == ERROR_FILE_NOT_FOUND) { - static const WCHAR rpcrt4[] = { - 'r','p','c','r','t','4',0 }; - HMODULE lib = LoadLibraryW(rpcrt4); - - if (lib) - { - RPC_STATUS (RPC_ENTRY *pUuidCreate)(UUID *); - UUID uuid; - WCHAR buf[37]; - RPC_STATUS rs; - static const WCHAR uuidFmt[] = { - '%','0','8','x','-','%','0','4','x','-', - '%','0','4','x','-','%','0','2','x', - '%','0','2','x','-','%','0','2','x', - '%','0','2','x','%','0','2','x', - '%','0','2','x','%','0','2','x', - '%','0','2','x',0 }; - - pUuidCreate = (void *)GetProcAddress(lib, "UuidCreate"); - rs = pUuidCreate(&uuid); - if (rs == S_OK) - { - sprintfW(buf, uuidFmt, - uuid.Data1, uuid.Data2, uuid.Data3, - uuid.Data4[0], uuid.Data4[1], - uuid.Data4[2], uuid.Data4[3], - uuid.Data4[4], uuid.Data4[5], - uuid.Data4[6], uuid.Data4[7] ); - RegSetValueExW(key, machineGuidW, 0, REG_SZ, - (const BYTE *)buf, - (lstrlenW(buf)+1)*sizeof(WCHAR)); - } - FreeLibrary(lib); - } + UUID uuid; + WCHAR buf[37]; + RPC_STATUS rs; + static const WCHAR uuidFmt[] = { + '%','0','8','x','-','%','0','4','x','-', + '%','0','4','x','-','%','0','2','x', + '%','0','2','x','-','%','0','2','x', + '%','0','2','x','%','0','2','x', + '%','0','2','x','%','0','2','x', + '%','0','2','x',0 }; + + rs = UuidCreate(&uuid); + if (rs == S_OK) + { + sprintfW(buf, uuidFmt, + uuid.Data1, uuid.Data2, uuid.Data3, + uuid.Data4[0], uuid.Data4[1], + uuid.Data4[2], uuid.Data4[3], + uuid.Data4[4], uuid.Data4[5], + uuid.Data4[6], uuid.Data4[7] ); + RegSetValueExW(key, machineGuidW, 0, REG_SZ, + (const BYTE *)buf, + (lstrlenW(buf)+1)*sizeof(WCHAR)); + } } RegCloseKey(key); }