mirror of
https://github.com/edubart/otclient.git
synced 2025-04-29 17:19:20 +02:00
Merge pull request #1052 from diath/fix_demangle_name
Fix a possible missing null terminator in the demangle_name output buffer
This commit is contained in:
commit
23bc0ab4b7
@ -45,21 +45,25 @@ namespace stdext {
|
||||
const char* demangle_name(const char* name)
|
||||
{
|
||||
static const unsigned BufferSize = 1024;
|
||||
static char Buffer[1024] = {};
|
||||
static char Buffer[BufferSize] = {};
|
||||
|
||||
#ifdef _MSC_VER
|
||||
UnDecorateSymbolName(name, Buffer, BufferSize, UNDNAME_COMPLETE);
|
||||
return Buffer;
|
||||
int written = UnDecorateSymbolName(name, Buffer, BufferSize - 1, UNDNAME_COMPLETE);
|
||||
Buffer[written] = '\0';
|
||||
#else
|
||||
size_t len;
|
||||
int status;
|
||||
char* demangled = abi::__cxa_demangle(name, nullptr, &len, &status);
|
||||
if(demangled) {
|
||||
strncpy(Buffer, demangled, BufferSize);
|
||||
strncpy(Buffer, demangled, BufferSize - 1);
|
||||
Buffer[BufferSize - 1] = '\0';
|
||||
free(demangled);
|
||||
} else {
|
||||
Buffer[0] = '\0';
|
||||
}
|
||||
return Buffer;
|
||||
#endif
|
||||
|
||||
return Buffer;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user