Roderick Colenbrander : ddraw: Fix RegDeleteTreeA/ W compile issues when building ddraw for Windows.
Alexandre Julliard
julliard at winehq.org
Mon Oct 1 07:55:04 CDT 2007
Module: wine
Branch: master
Commit: 03fa9f8730a6f576c70ce5ec6160496348b829d5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=03fa9f8730a6f576c70ce5ec6160496348b829d5
Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date: Sat Sep 29 21:06:40 2007 +0200
ddraw: Fix RegDeleteTreeA/W compile issues when building ddraw for Windows.
---
dlls/ddraw/regsvr.c | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/regsvr.c b/dlls/ddraw/regsvr.c
index 4371e62..0a1f7a7 100644
--- a/dlls/ddraw/regsvr.c
+++ b/dlls/ddraw/regsvr.c
@@ -34,6 +34,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
+static typeof(RegDeleteTreeW) * pRegDeleteTreeW;
+static typeof(RegDeleteTreeA) * pRegDeleteTreeA;
+
/*
* Near the bottom of this file are the exported DllRegisterServer and
* DllUnregisterServer, which make all this worthwhile.
@@ -193,7 +196,7 @@ static HRESULT unregister_interfaces(struct regsvr_interface const *list)
WCHAR buf[39];
StringFromGUID2(list->iid, buf, 39);
- res = RegDeleteTreeW(interface_key, buf);
+ res = pRegDeleteTreeW(interface_key, buf);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
}
@@ -304,12 +307,12 @@ static HRESULT unregister_coclasses(struct regsvr_coclass const *list)
WCHAR buf[39];
StringFromGUID2(list->clsid, buf, 39);
- res = RegDeleteTreeW(coclass_key, buf);
+ res = pRegDeleteTreeW(coclass_key, buf);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
if (list->progid) {
- res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid);
+ res = pRegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
}
@@ -422,6 +425,12 @@ HRESULT WINAPI DllUnregisterServer(void)
{
HRESULT hr;
+ HMODULE advapi32 = GetModuleHandleA("advapi32");
+ if (!advapi32) return E_FAIL;
+ pRegDeleteTreeA = (typeof(RegDeleteTreeA)*) GetProcAddress(advapi32, "RegDeleteTreeA");
+ pRegDeleteTreeW = (typeof(RegDeleteTreeW)*) GetProcAddress(advapi32, "RegDeleteTreeW");
+ if (!pRegDeleteTreeA || !pRegDeleteTreeW) return E_FAIL;
+
TRACE("\n");
hr = unregister_coclasses(coclass_list);
More information about the wine-cvs
mailing list