Alexandre Julliard : winetest: Use the registry path for COM dlls instead of GetModuleFileName.
Alexandre Julliard
julliard at winehq.org
Tue Sep 29 11:09:07 CDT 2009
Module: wine
Branch: master
Commit: c75aa35ba2380829a1f442a5479f9b5ad760a34b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c75aa35ba2380829a1f442a5479f9b5ad760a34b
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Sep 29 13:06:09 2009 +0200
winetest: Use the registry path for COM dlls instead of GetModuleFileName.
This allows to load them with LOAD_LIBRARY_AS_DATAFILE.
---
programs/winetest/main.c | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/programs/winetest/main.c b/programs/winetest/main.c
index 4287066..f43b7de 100644
--- a/programs/winetest/main.c
+++ b/programs/winetest/main.c
@@ -570,12 +570,13 @@ static BOOL get_main_clsid(const char *name, CLSID *clsid)
return FALSE;
}
-static HMODULE load_com_dll(const char *name)
+static HMODULE load_com_dll(const char *name, char **path, char *filename)
{
HMODULE dll = NULL;
HKEY hkey;
char keyname[100];
char dllname[MAX_PATH];
+ char *p;
CLSID clsid;
if(!get_main_clsid(name, &clsid)) return NULL;
@@ -589,7 +590,15 @@ static HMODULE load_com_dll(const char *name)
{
LONG size = sizeof(dllname);
if(RegQueryValueA(hkey, NULL, dllname, &size) == ERROR_SUCCESS)
- dll = LoadLibraryA(dllname);
+ {
+ if ((dll = LoadLibraryExA(dllname, NULL, LOAD_LIBRARY_AS_DATAFILE)))
+ {
+ strcpy( filename, dllname );
+ p = strrchr(dllname, '\\');
+ if (p) *p = 0;
+ *path = heap_strdup( dllname );
+ }
+ }
RegCloseKey(hkey);
}
@@ -628,11 +637,7 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType,
strcpy(filename, dllname);
dll = LoadLibraryExA(dllname, NULL, LOAD_LIBRARY_AS_DATAFILE);
- if(!dll)
- {
- dll = load_com_dll(dllname);
- if(dll) get_dll_path(dll, &wine_tests[nr_of_files].maindllpath, filename);
- }
+ if (!dll) dll = load_com_dll(dllname, &wine_tests[nr_of_files].maindllpath, filename);
if (!dll && pLoadLibraryShim)
{
More information about the wine-cvs
mailing list