Huw Davies : dbghelp: Skip the dllprefix when matching PE with ELF modules.
Alexandre Julliard
julliard at winehq.org
Fri Sep 27 11:33:13 CDT 2013
Module: wine
Branch: master
Commit: 5c7c954658ff330a43bbe53cd8d5dad423b75de6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5c7c954658ff330a43bbe53cd8d5dad423b75de6
Author: Huw Davies <huw at codeweavers.com>
Date: Fri Sep 27 11:14:42 2013 +0100
dbghelp: Skip the dllprefix when matching PE with ELF modules.
---
dlls/dbghelp/Makefile.in | 2 +-
dlls/dbghelp/module.c | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/dlls/dbghelp/Makefile.in b/dlls/dbghelp/Makefile.in
index 3fb7b52..a9bf073 100644
--- a/dlls/dbghelp/Makefile.in
+++ b/dlls/dbghelp/Makefile.in
@@ -1,6 +1,6 @@
MODULE = dbghelp.dll
IMPORTLIB = dbghelp
-EXTRADEFS = -D_IMAGEHLP_SOURCE_
+EXTRADEFS = -D_IMAGEHLP_SOURCE_ -DDLLPREFIX='"$(DLLPREFIX)"'
IMPORTS = psapi
DELAYIMPORTS = version
EXTRALIBS = @ZLIB@
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index 6bea436..521cdb3f 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -422,6 +422,16 @@ static BOOL module_is_container_loaded(const struct process* pcs,
size_t len;
struct module* module;
PCWSTR filename, modname;
+ static WCHAR* dll_prefix;
+ static int dll_prefix_len;
+
+ if (!dll_prefix)
+ {
+ dll_prefix_len = MultiByteToWideChar( CP_UNIXCP, 0, DLLPREFIX, -1, NULL, 0 );
+ dll_prefix = HeapAlloc( GetProcessHeap(), 0, dll_prefix_len * sizeof(WCHAR) );
+ MultiByteToWideChar( CP_UNIXCP, 0, DLLPREFIX, -1, dll_prefix, dll_prefix_len );
+ dll_prefix_len--;
+ }
if (!base) return FALSE;
filename = get_filename(ImageName, NULL);
@@ -434,6 +444,7 @@ static BOOL module_is_container_loaded(const struct process* pcs,
base < module->module.BaseOfImage + module->module.ImageSize)
{
modname = get_filename(module->module.LoadedImageName, NULL);
+ if (dll_prefix_len && !strncmpW( modname, dll_prefix, dll_prefix_len )) modname += dll_prefix_len;
if (!strncmpiW(modname, filename, len) &&
!memcmp(modname + len, S_DotSoW, 3 * sizeof(WCHAR)))
{
More information about the wine-cvs
mailing list