diff options
author | David Chisnall <theraven@FreeBSD.org> | 2013-09-23 11:35:49 +0000 |
---|---|---|
committer | David Chisnall <theraven@FreeBSD.org> | 2013-09-23 11:35:49 +0000 |
commit | 175e74cef9cc52a239b899d2a0f6e9e84299f0a2 (patch) | |
tree | f2df17545f2d8d00fe70f11c2b535936107d6aa1 /typeinfo.cc | |
parent | c7b3fb9657cbe3a2b40054e260891cf69adc6ac1 (diff) |
Notes
Diffstat (limited to 'typeinfo.cc')
-rw-r--r-- | typeinfo.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/typeinfo.cc b/typeinfo.cc index f941abdaeb890..fda5196e307c6 100644 --- a/typeinfo.cc +++ b/typeinfo.cc @@ -86,7 +86,18 @@ extern "C" char* __cxa_demangle(const char* mangled_name, if (NULL != demangled) { size_t len = strlen(demangled); - buf = (char*)realloc(buf, len+1); + if (buf == NULL) + { + if (n) + { + *n = len; + } + return demangled; + } + if (*n < len+1) + { + buf = (char*)realloc(buf, len+1); + } if (0 != buf) { memcpy(buf, demangled, len); |