https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5637f59e519feca255365…
commit 5637f59e519feca2553659533fc19f24e35e3b74
Author: winesync <ros-dev(a)reactos.org>
AuthorDate: Fri Sep 11 19:12:24 2020 +0200
Commit: Jérôme Gardou <jerome.gardou(a)reactos.org>
CommitDate: Wed Sep 16 10:36:00 2020 +0200
[WINESYNC] dbghelp: Use debuggee environment in search_unix_path.
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
wine commit id 7b6f6257bc7e9d8f8a93dfa969510ab4aa16e765 by Jacek Caban
<jacek(a)codeweavers.com>
---
dll/win32/dbghelp/dbghelp_private.h | 2 +-
dll/win32/dbghelp/elf_module.c | 2 +-
dll/win32/dbghelp/macho_module.c | 6 +++---
dll/win32/dbghelp/path.c | 12 ++++++------
sdk/tools/winesync/dbghelp.cfg | 2 +-
5 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dll/win32/dbghelp/dbghelp_private.h b/dll/win32/dbghelp/dbghelp_private.h
index 434e157c28f..3e307fa07d5 100644
--- a/dll/win32/dbghelp/dbghelp_private.h
+++ b/dll/win32/dbghelp/dbghelp_private.h
@@ -707,7 +707,7 @@ extern BOOL path_find_symbol_file(const struct process* pcs,
const struc
extern WCHAR *get_dos_file_name(const WCHAR *filename) DECLSPEC_HIDDEN;
extern BOOL search_dll_path(const struct process* process, const WCHAR *name,
BOOL (*match)(void*, HANDLE, const WCHAR*), void *param)
DECLSPEC_HIDDEN;
-extern BOOL search_unix_path(const WCHAR *name, const char *path, BOOL (*match)(void*,
HANDLE, const WCHAR*), void *param) DECLSPEC_HIDDEN;
+extern BOOL search_unix_path(const WCHAR *name, const WCHAR *path, BOOL (*match)(void*,
HANDLE, const WCHAR*), void *param) DECLSPEC_HIDDEN;
extern const WCHAR* file_name(const WCHAR* str) DECLSPEC_HIDDEN;
extern const char* file_nameA(const char* str) DECLSPEC_HIDDEN;
diff --git a/dll/win32/dbghelp/elf_module.c b/dll/win32/dbghelp/elf_module.c
index 00e5c12c2e6..e44629f016e 100644
--- a/dll/win32/dbghelp/elf_module.c
+++ b/dll/win32/dbghelp/elf_module.c
@@ -1435,7 +1435,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const
WCHAR* filename,
load_elf.dyn_addr = dyn_addr;
load_elf.elf_info = elf_info;
- ret = search_unix_path(filename, getenv("LD_LIBRARY_PATH"),
elf_load_file_cb, &load_elf)
+ ret = search_unix_path(filename, process_getenv(pcs,
L"LD_LIBRARY_PATH"), elf_load_file_cb, &load_elf)
|| search_dll_path(pcs, filename, elf_load_file_cb, &load_elf);
}
diff --git a/dll/win32/dbghelp/macho_module.c b/dll/win32/dbghelp/macho_module.c
index 05549571c5e..8e91577e449 100644
--- a/dll/win32/dbghelp/macho_module.c
+++ b/dll/win32/dbghelp/macho_module.c
@@ -1574,7 +1574,7 @@ static BOOL macho_search_and_load_file(struct process* pcs, const
WCHAR* filenam
/* Try DYLD_LIBRARY_PATH first. */
p = file_name(filename);
- ret = search_unix_path(p, getenv("DYLD_LIBRARY_PATH"), macho_load_file_cb,
&load_params);
+ ret = search_unix_path(p, process_getenv(pcs, L"DYLD_LIBRARY_PATH"),
macho_load_file_cb, &load_params);
/* Try the path as given. */
if (!ret)
@@ -1582,9 +1582,9 @@ static BOOL macho_search_and_load_file(struct process* pcs, const
WCHAR* filenam
/* Try DYLD_FALLBACK_LIBRARY_PATH, with just the filename (no directories). */
if (!ret)
{
- const char* fallback = getenv("DYLD_FALLBACK_LIBRARY_PATH");
+ const WCHAR* fallback = process_getenv(pcs,
L"DYLD_FALLBACK_LIBRARY_PATH");
if (!fallback)
- fallback = "/usr/local/lib:/lib:/usr/lib";
+ fallback = L"/usr/local/lib:/lib:/usr/lib";
ret = search_unix_path(p, fallback, macho_load_file_cb, &load_params);
}
if (!ret && p == filename)
diff --git a/dll/win32/dbghelp/path.c b/dll/win32/dbghelp/path.c
index 87eeb93ae6d..2681c405aa1 100644
--- a/dll/win32/dbghelp/path.c
+++ b/dll/win32/dbghelp/path.c
@@ -780,9 +780,9 @@ found:
return TRUE;
}
-BOOL search_unix_path(const WCHAR *name, const char *path, BOOL (*match)(void*, HANDLE,
const WCHAR*), void *param)
+BOOL search_unix_path(const WCHAR *name, const WCHAR *path, BOOL (*match)(void*, HANDLE,
const WCHAR*), void *param)
{
- const char *iter, *next;
+ const WCHAR *iter, *next;
size_t size, len;
WCHAR *dos_path;
char *buf;
@@ -791,16 +791,16 @@ BOOL search_unix_path(const WCHAR *name, const char *path, BOOL
(*match)(void*,
if (!path) return FALSE;
name = file_name(name);
- size = WideCharToMultiByte(CP_UNIXCP, 0, name, -1, NULL, 0, NULL, NULL) +
strlen(path) + 1;
+ size = WideCharToMultiByte(CP_UNIXCP, 0, name, -1, NULL, 0, NULL, NULL)
+ + WideCharToMultiByte(CP_UNIXCP, 0, path, -1, NULL, 0, NULL, NULL);
if (!(buf = heap_alloc(size))) return FALSE;
for (iter = path;; iter = next + 1)
{
- if (!(next = strchr(iter, ':'))) next = iter + strlen(iter);
+ if (!(next = wcschr(iter, ':'))) next = iter + lstrlenW(iter);
if (*iter == '/')
{
- len = next - iter;
- memcpy(buf, iter, len);
+ len = WideCharToMultiByte(CP_UNIXCP, 0, iter, next - iter, buf, size, NULL,
NULL);
if (buf[len - 1] != '/') buf[len++] = '/';
WideCharToMultiByte(CP_UNIXCP, 0, name, -1, buf + len, size - len, NULL,
NULL);
if ((dos_path = wine_get_dos_file_name(buf)))
diff --git a/sdk/tools/winesync/dbghelp.cfg b/sdk/tools/winesync/dbghelp.cfg
index 29c754ab814..edefd93828d 100644
--- a/sdk/tools/winesync/dbghelp.cfg
+++ b/sdk/tools/winesync/dbghelp.cfg
@@ -4,4 +4,4 @@ files:
include/dbghelp.h: sdk/include/psdk/dbghelp.h
include/wine/mscvpdb.h: sdk/include/reactos/wine/mscvpdb.h
tags:
- wine: ab4665f4ae3c67317e21d42868cae0af72ffcb7a
+ wine: 7b6f6257bc7e9d8f8a93dfa969510ab4aa16e765