diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2018-11-22 14:34:03 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2018-11-22 14:34:03 +0300 |
commit | 1cac788521d8de382b0c976cfc8ea2ad1cd59f34 (patch) | |
tree | 370d80520cefe5dc31f2094b3a4e9497611d511f /extra | |
parent | 225f8070477fd6f4766ea05c2444aa48bee22899 (diff) | |
download | bdwgc-1cac788521d8de382b0c976cfc8ea2ad1cd59f34.tar.gz |
Workaround 'nonlocal var will use ptr to local var' cppcheck false positive
* extra/msvc_dbg.c (sym_namebuf_u): New union type.
* extra/msvc_dbg.c (GetSymbolNameFromAddress): Use sym_namebuf_u
instead of anonymous union.
* os_dep.c [MPROTECT_VDB && DARWIN] (mp_reply_s, mp_msg_s): Move struct
type definition out of GC_mprotect_thread (adding mp_ prefix).
Diffstat (limited to 'extra')
-rw-r--r-- | extra/msvc_dbg.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/extra/msvc_dbg.c b/extra/msvc_dbg.c index 22865d53..7f6409d4 100644 --- a/extra/msvc_dbg.c +++ b/extra/msvc_dbg.c @@ -212,6 +212,11 @@ size_t GetModuleNameFromStack(size_t skip, char* moduleName, size_t size) return 0; } +union sym_namebuf_u { + IMAGEHLP_SYMBOL sym; + char symNameBuffer[sizeof(IMAGEHLP_SYMBOL) + MAX_SYM_NAME]; +}; + size_t GetSymbolNameFromAddress(void* address, char* symbolName, size_t size, size_t* offsetBytes) { @@ -219,10 +224,8 @@ size_t GetSymbolNameFromAddress(void* address, char* symbolName, size_t size, if (offsetBytes) *offsetBytes = 0; __try { ULONG_ADDR dwOffset = 0; - union { - IMAGEHLP_SYMBOL sym; - char symNameBuffer[sizeof(IMAGEHLP_SYMBOL) + MAX_SYM_NAME]; - } u; + union sym_namebuf_u u; + u.sym.SizeOfStruct = sizeof(u.sym); u.sym.MaxNameLength = sizeof(u.symNameBuffer) - sizeof(u.sym); |