Stacktrace doesn't work with non-ASCII or Unicode identifiers
|Reported by:||suzumizaki||Owned by:||vadz|
|Keywords:||Unicode call stack trace non-ASCII work-needed||Cc:|
Current stack-tracing code always fails if some functions have non-ASCII identifiers with wxMSW.
When the assertion-stop is made while calling the function with non-ASCII named, nonsense another stop will also be made. "Nonsense" one throws away the information we really need, which the first one has.
This invalid behavior depends on calling wxString::FromAscii(char*) with non-ASCII string in short. But with accuracy to say, we should use wide char (PCWSTR/PWSTR) versions of debugging API on Windows, not ANSI(MBCS) ones.
As you know, C++ specification allows non-ASCII identifiers. This means the names can be exists outside of wxWidgets and the outside one can be included into our stack traces.
I tried to fix and post the patch, but I don't know which environment we should check especially outdated operating systems/SDKs/develop environments. Anyone Help? Or what should I do anything else?
I checked by attached .cpp code (simply replace with "minimal.cpp") with:
1) Windows 8 Pro 64bit
2A) Visual C++ 2010 Express (with Windows SDK 7.1 for 64 bit)
2B) Visual Studio 2012 Express for Windows Desktop
note1) Both 2A and 2B, I tested only UNICODE build, but both 32bit and 64bit.
note2) All 1, 2A, 2B are working as Japanese Edition.
Change History (36)
comment:4 Changed 3 years ago by vadz
- Keywords work-needed added
- Owner vadz deleted
- Patch unset
- Status changed from accepted to new
comment:10 Changed 3 years ago by vadz
- Milestone set to 3.0
- Owner set to vadz
- Status changed from new to accepted
comment:15 Changed 3 years ago by vadz
- Milestone 3.0 deleted
- Resolution fixed deleted
- Status changed from closed to reopened