mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Fixed upstream by 59a7777f8494d909b9366015157d8be4ef1edb46
This commit is contained in:
parent
c13d7cca17
commit
9f7244a1c6
@ -1,91 +0,0 @@
|
||||
From 0f9b976bc57a6a43a74a60d97df82b469d8266fb Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 28 May 2017 09:04:10 +0200
|
||||
Subject: [PATCH] server: Store full path for ntdll/kernel32 dll.
|
||||
|
||||
---
|
||||
dlls/ntdll/loader.c | 8 ++++++++
|
||||
server/process.c | 23 +++++++++++++++++++++++
|
||||
server/protocol.def | 6 ++++++
|
||||
3 files changed, 37 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
|
||||
index 6f4f249..0b2bd4d 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -3157,6 +3157,14 @@ static void MODULE_DecRefCount( WINE_MODREF *wm )
|
||||
|
||||
wm->ldr.Flags &= ~LDR_UNLOAD_IN_PROGRESS;
|
||||
}
|
||||
+
|
||||
+ /* do the same for the wineserver dll list */
|
||||
+ SERVER_START_REQ( init_system_dir )
|
||||
+ {
|
||||
+ wine_server_add_data( req, system_dir.Buffer, system_dir.Length );
|
||||
+ wine_server_call( req );
|
||||
+ }
|
||||
+ SERVER_END_REQ;
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 8c40f25..1941082 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -49,6 +49,8 @@
|
||||
#include "user.h"
|
||||
#include "security.h"
|
||||
|
||||
+#include "wine/unicode.h"
|
||||
+
|
||||
/* process structure */
|
||||
|
||||
static struct list process_list = LIST_INIT(process_list);
|
||||
@@ -1617,6 +1619,27 @@ DECL_HANDLER(load_dll)
|
||||
}
|
||||
}
|
||||
|
||||
+/* prepend the system dir to the name of the already created modules */
|
||||
+DECL_HANDLER(init_system_dir)
|
||||
+{
|
||||
+ struct process *process = current->process;
|
||||
+ struct process_dll *dll;
|
||||
+ WCHAR *filename, *p;
|
||||
+
|
||||
+ LIST_FOR_EACH_ENTRY( dll, &process->dlls, struct process_dll, entry )
|
||||
+ {
|
||||
+ if (memchrW( dll->filename, '\\', dll->namelen / sizeof(WCHAR) )) continue;
|
||||
+ if (!(filename = mem_alloc( get_req_data_size() + dll->namelen + sizeof(WCHAR) ))) continue;
|
||||
+ memcpy( filename, get_req_data(), get_req_data_size() );
|
||||
+ p = filename + get_req_data_size() / sizeof(WCHAR);
|
||||
+ if (p > filename && p[-1] != '\\') *p++ = '\\';
|
||||
+ memcpy( p, dll->filename, dll->namelen );
|
||||
+ free( dll->filename );
|
||||
+ dll->namelen += (p - filename) * sizeof(WCHAR);
|
||||
+ dll->filename = filename;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* notify the server that a dll is being unloaded */
|
||||
DECL_HANDLER(unload_dll)
|
||||
{
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 8dfc2ae..372a1a8 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -965,6 +965,12 @@ struct rawinput_device
|
||||
@END
|
||||
|
||||
|
||||
+/* Prepend the system directory to already loaded modules */
|
||||
+@REQ(init_system_dir)
|
||||
+ VARARG(sysdir,unicode_str); /* system directory */
|
||||
+@END
|
||||
+
|
||||
+
|
||||
/* Notify the server that a dll is being unloaded */
|
||||
@REQ(unload_dll)
|
||||
mod_handle_t base; /* base address */
|
||||
--
|
||||
1.9.1
|
||||
|
@ -6150,7 +6150,6 @@ fi
|
||||
# | dlls/ntdll/virtual.c, dlls/psapi/tests/psapi_main.c, server/mapping.c, server/process.c, server/protocol.def
|
||||
# |
|
||||
if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0001-server-Store-full-path-for-ntdll-kernel32-dll.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0002-ntdll-Split-logic-for-MemoryBasicInformation-into-a-.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0004-ntdll-tests-Add-tests-for-NtQueryVirtualMemory-Memor.patch
|
||||
@ -6160,7 +6159,6 @@ if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch
|
||||
patch_apply ntdll-NtQueryVirtualMemory/0009-ntdll-Fix-error-code-when-querying-too-large-memory-.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "server: Store full path for ntdll/kernel32 dll.", 1 },';
|
||||
printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll: Split logic for MemoryBasicInformation into a separate function.", 1 },';
|
||||
printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll: Implement NtQueryVirtualMemory(MemorySectionName).", 3 },';
|
||||
printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll/tests: Add tests for NtQueryVirtualMemory(MemorySectionName).", 1 },';
|
||||
|
Loading…
Reference in New Issue
Block a user