load_dll: MODULE_GetLoadOrderW on filename versus libname
Uwe Bonnes
bon at elektron.ikp.physik.tu-darmstadt.de
Wed Sep 22 05:13:57 CDT 2004
Hallo,
some installer (extracted from slvc009j.zip from Texas instruments
(www.ti.com)) loaded the native msi.dll, also I gave WINEDLLOVERRIDES=msi=b
on the command line.
The program copies some msi.dll to some directory, and prepends that
directory to the loadpath. Then it calls:
000d:Call kernel32.LoadLibraryA(010013f8 "msi.dll") ret=01004283
load_dll now does a find_dll_file and sees "L:\\temp\\IXP000.TMP\\msi.dll"
. sets filename to "L:\\temp\\IXP000.TMP\\msi.dll" and compares
"L:\\temp\\IXP000.TMP\\msi.dll" for the loadorder.
000d:Call ntdll.LdrLoadDll(403dc0e8 L"L:\\temp\\IXP000.TMP;.;c:\\nt4sp5g\\system32;c:\\nt4sp5g;d:\\wine95;d:\\
wine95\\system;c:\\cae\\pasic\\spde;f:;",00000000,4070f424,4070f404) ret=4052392b
trace:module:load_dll looking for L"msi.dll" in L"L:\\temp\\IXP000.TMP;.;c:\\nt4sp5g\\system32;c:\\nt4sp5g;d:\
\wine95;d:\\wine95\\system;c:\\cae\\pasic\\spde;f:;"
trace:module:MODULE_GetLoadOrderW looking for L"L:\\temp\\IXP000.TMP\\msi.dll"
trace:module:open_app_key searching L"L:\\temp\\IXP000.TMP\\msi" in L"Machine\\Software\\Wine\\Wine\\Config\\A
ppDefaults\\msiinst.exe\\DllOverrides"
trace:module:MODULE_GetLoadOrderW got hardcoded path default "n,b" for L"L:\\temp\\IXP000.TMP\\msi.dll"
trace:module:load_dll Trying native dll L"L:\\temp\\IXP000.TMP\\msi.dll"
trace:module:load_native_dll loading L"L:\\temp\\IXP000.TMP\\msi.dll"
This leads to the native dll getting loaded. Is this the right thing?
Shouldn't MODULE_GetLoadOrderW compare for libname and not filename? Only if
libname has an explicit path, we should compare for that path.
Bye
Index: wine/dlls/ntdll/loader.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/loader.c,v
retrieving revision 1.77
diff -u -w -r1.77 loader.c
--- wine/dlls/ntdll/loader.c 15 Sep 2004 18:02:49 -0000 1.77
+++ wine/dlls/ntdll/loader.c 22 Sep 2004 10:08:48 -0000
@@ -1507,7 +1507,7 @@
}
main_exe = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
- MODULE_GetLoadOrderW( loadorder, main_exe ? main_exe->ldr.BaseDllName.Buffer : NULL, filename );
+ MODULE_GetLoadOrderW( loadorder, main_exe ? main_exe->ldr.BaseDllName.Buffer : NULL, libname );
nts = STATUS_DLL_NOT_FOUND;
for (i = 0; i < LOADORDER_NTYPES; i++)
--
Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
More information about the wine-devel
mailing list