Module: wine Branch: master Commit: c75aa35ba2380829a1f442a5479f9b5ad760a34b URL: http://source.winehq.org/git/wine.git/?a=commit;h=c75aa35ba2380829a1f442a547...
Author: Alexandre Julliard julliard@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) {