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