Robert Shearman : ntdll: Loader optimization.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jan 18 10:50:45 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 2d08465b81d90e8cf1389b5abf5abefee7ba6462
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=2d08465b81d90e8cf1389b5abf5abefee7ba6462
Author: Robert Shearman <rob at codeweavers.com>
Date: Wed Jan 18 14:22:19 2006 +0100
ntdll: Loader optimization.
Optimize for the case where a DLL with no path is requested and it is
already loaded.
---
dlls/ntdll/loader.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 47cc1da..5996523 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -1487,6 +1487,12 @@ static NTSTATUS find_dll_file( const WCH
}
nt_name.Buffer = NULL;
+
+ if (!contains_path( libname ))
+ {
+ if ((*pwm = find_basename_module( libname )) != NULL) goto found;
+ }
+
if (RtlDetermineDosPathNameType_U( libname ) == RELATIVE_PATH)
{
/* we need to search for it */
@@ -1496,11 +1502,6 @@ static NTSTATUS find_dll_file( const WCH
if (len >= *size) goto overflow;
if ((*pwm = find_fullname_module( filename )) != NULL) goto found;
- /* check for already loaded module in a different path */
- if (!contains_path( libname ))
- {
- if ((*pwm = find_basename_module( file_part )) != NULL) goto found;
- }
if (!RtlDosPathNameToNtPathName_U( filename, &nt_name, NULL, NULL ))
{
RtlFreeHeap( GetProcessHeap(), 0, dllname );
@@ -1525,7 +1526,6 @@ static NTSTATUS find_dll_file( const WCH
len = strlenW(libname) * sizeof(WCHAR);
if (len >= *size) goto overflow;
strcpyW( filename, libname );
- *pwm = find_basename_module( filename );
goto found;
}
}
More information about the wine-cvs
mailing list