Revert "Make wxMSW stack walking methods work with Unicode identifiers."
This reverts r74817 because it broke compilation with VC8 and it doesn't seem obvious to fix this. See #15138, closes #15500. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74820 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
// Name: src/msw/dlmsw.cpp
|
||||
// Purpose: Win32-specific part of wxDynamicLibrary and related classes
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by: Suzumizaki-kimitaka 2013-04-09
|
||||
// Modified by:
|
||||
// Created: 2005-01-10 (partly extracted from common/dynlib.cpp)
|
||||
// Copyright: (c) 1998-2005 Vadim Zeitlin <vadim@wxwindows.org>
|
||||
// Licence: wxWindows licence
|
||||
@@ -28,11 +28,6 @@
|
||||
#include "wx/msw/debughlp.h"
|
||||
#include "wx/filename.h"
|
||||
|
||||
// defined for TDM's GCC/mingw32
|
||||
#ifndef PCTSTR
|
||||
#define PCTSTR LPCTSTR
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private classes
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -82,8 +77,15 @@ public:
|
||||
wxVersionDLL *verDLL;
|
||||
};
|
||||
|
||||
// TODO: fix EnumerateLoadedModules() to use EnumerateLoadedModules64()
|
||||
#ifdef __WIN64__
|
||||
typedef DWORD64 DWORD_32_64;
|
||||
#else
|
||||
typedef DWORD DWORD_32_64;
|
||||
#endif
|
||||
|
||||
static BOOL CALLBACK
|
||||
EnumModulesProc(PCTSTR name, DWORD64 base, ULONG size, PVOID data);
|
||||
EnumModulesProc(PCSTR name, DWORD_32_64 base, ULONG size, void *data);
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
@@ -111,7 +113,7 @@ wxVersionDLL::wxVersionDLL()
|
||||
#endif // UNICODE/ANSI
|
||||
|
||||
#define LOAD_VER_FUNCTION(name) \
|
||||
m_pfn ## name = (name ## _t)m_dll.GetSymbol(wxT(#name SUFFIX)); \
|
||||
m_pfn ## name = (name ## _t)m_dll.GetSymbol(wxT(#name SUFFIX)); \
|
||||
if ( !m_pfn ## name ) \
|
||||
{ \
|
||||
m_dll.Unload(); \
|
||||
@@ -170,21 +172,17 @@ wxString wxVersionDLL::GetFileVersion(const wxString& filename) const
|
||||
|
||||
/* static */
|
||||
BOOL CALLBACK
|
||||
wxDynamicLibraryDetailsCreator::EnumModulesProc(PCTSTR name,
|
||||
DWORD64 base,
|
||||
wxDynamicLibraryDetailsCreator::EnumModulesProc(PCSTR name,
|
||||
DWORD_32_64 base,
|
||||
ULONG size,
|
||||
PVOID data)
|
||||
void *data)
|
||||
{
|
||||
EnumModulesProcParams *params = (EnumModulesProcParams *)data;
|
||||
|
||||
wxDynamicLibraryDetails *details = new wxDynamicLibraryDetails;
|
||||
|
||||
// fill in simple properties
|
||||
#ifdef UNICODE
|
||||
details->m_name = name;
|
||||
#else
|
||||
details->m_name = wxString(name, wxConvLocal);
|
||||
#endif
|
||||
details->m_address = wxUIntToPtr(base);
|
||||
details->m_length = size;
|
||||
|
||||
@@ -322,14 +320,20 @@ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded()
|
||||
params.dlls = &dlls;
|
||||
params.verDLL = &verDLL;
|
||||
|
||||
if ( !wxDbgHelpDLL::EnumerateLoadedModulesT
|
||||
// Note that the cast of EnumModulesProc is needed because the type of
|
||||
// PENUMLOADED_MODULES_CALLBACK changed: in old SDK versions its first
|
||||
// argument was non-const PSTR while now it's PCSTR. By explicitly
|
||||
// casting to whatever the currently used headers require we ensure
|
||||
// that the code compilers in any case.
|
||||
if ( !wxDbgHelpDLL::EnumerateLoadedModules
|
||||
(
|
||||
::GetCurrentProcess(),
|
||||
(PENUMLOADED_MODULES_CALLBACK)
|
||||
wxDynamicLibraryDetailsCreator::EnumModulesProc,
|
||||
¶ms
|
||||
) )
|
||||
{
|
||||
wxLogLastError(wxT("EnumerateLoadedModulesT"));
|
||||
wxLogLastError(wxT("EnumerateLoadedModules"));
|
||||
}
|
||||
}
|
||||
#endif // wxUSE_DBGHELP
|
||||
|
Reference in New Issue
Block a user