summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2018-11-22 14:34:03 +0300
committerIvan Maidanski <ivmai@mail.ru>2018-11-22 14:34:03 +0300
commit1cac788521d8de382b0c976cfc8ea2ad1cd59f34 (patch)
tree370d80520cefe5dc31f2094b3a4e9497611d511f /extra
parent225f8070477fd6f4766ea05c2444aa48bee22899 (diff)
downloadbdwgc-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.c11
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);