[PATCH] ntdll: Lookup build dir dlls with a dot using their full name.

Rémi Bernon rbernon at codeweavers.com
Fri Mar 5 09:39:25 CST 2021


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---

Either that or it needs to be some changes to the way dots are handled
in the build, to support modules named like "windows.media.speech".

I had a patch for that initially but I don't remember where it was.

 dlls/ntdll/unix/loader.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index df8d99ce489..8b17bf9830a 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1450,7 +1450,7 @@ static NTSTATUS CDECL load_builtin_dll( UNICODE_STRING *nt_name, void **module,
         ptr = file + pos;
         namelen = len + 1;
         file[pos + len + 1] = 0;
-        if (ext && !strcmp( ext, ".dll" )) namelen -= 4;
+        if (ext && !strcmp( ext, ".dll" ) && strchr( ptr, '.' ) == ext) namelen -= 4;
         ptr = prepend( ptr, ptr, namelen );
         ptr = prepend( ptr, "/dlls", sizeof("/dlls") - 1 );
         ptr = prepend( ptr, build_dir, strlen(build_dir) );
@@ -1461,7 +1461,7 @@ static NTSTATUS CDECL load_builtin_dll( UNICODE_STRING *nt_name, void **module,
         ptr = file + pos;
         namelen = len + 1;
         file[pos + len + 1] = 0;
-        if (ext && !strcmp( ext, ".exe" )) namelen -= 4;
+        if (ext && !strcmp( ext, ".exe" ) && strchr( ptr, '.' ) == ext) namelen -= 4;
         ptr = prepend( ptr, ptr, namelen );
         ptr = prepend( ptr, "/programs", sizeof("/programs") - 1 );
         ptr = prepend( ptr, build_dir, strlen(build_dir) );
-- 
2.30.0




More information about the wine-devel mailing list