summaryrefslogtreecommitdiff
path: root/typeinfo.cc
diff options
context:
space:
mode:
authorDavid Chisnall <theraven@FreeBSD.org>2013-09-23 11:35:49 +0000
committerDavid Chisnall <theraven@FreeBSD.org>2013-09-23 11:35:49 +0000
commit175e74cef9cc52a239b899d2a0f6e9e84299f0a2 (patch)
treef2df17545f2d8d00fe70f11c2b535936107d6aa1 /typeinfo.cc
parentc7b3fb9657cbe3a2b40054e260891cf69adc6ac1 (diff)
Notes
Diffstat (limited to 'typeinfo.cc')
-rw-r--r--typeinfo.cc13
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);