summaryrefslogtreecommitdiffstats
path: root/contrib/libcxxrt
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2017-03-25 12:29:15 +0000
committerdim <dim@FreeBSD.org>2017-03-25 12:29:15 +0000
commitf41cd7e2a015bf78169ed297bd77746f72d04302 (patch)
tree55506859ca6f1c94e2ec4a77ffd0b3ddb76f1173 /contrib/libcxxrt
parent6d1eb9b2aaec4ea996b5eeb16b7572206648a5f5 (diff)
downloadFreeBSD-src-f41cd7e2a015bf78169ed297bd77746f72d04302.zip
FreeBSD-src-f41cd7e2a015bf78169ed297bd77746f72d04302.tar.gz
MFC r315745:
Cherry-pick libcxxrt commit 8a853717e61d5d55cbdf74d9d0a7545da5d5ff92: Author: David Chisnall <theraven@FreeBSD.org> Date: Wed Mar 22 12:27:08 2017 +0000 Simplify some code. realloc() with a null pointer is equivalent to malloc, so we don't need to handle the two cases independently. Fixes #46 This should help with lang/beignet and other programs, which expect __cxa_demangle(name, NULL, NULL, &status) to return zero in status. PR: 213732
Diffstat (limited to 'contrib/libcxxrt')
-rw-r--r--contrib/libcxxrt/typeinfo.cc10
1 files changed, 1 insertions, 9 deletions
diff --git a/contrib/libcxxrt/typeinfo.cc b/contrib/libcxxrt/typeinfo.cc
index 71de9ae..5c44ef1 100644
--- a/contrib/libcxxrt/typeinfo.cc
+++ b/contrib/libcxxrt/typeinfo.cc
@@ -86,15 +86,7 @@ extern "C" char* __cxa_demangle(const char* mangled_name,
if (NULL != demangled)
{
size_t len = strlen(demangled);
- if (buf == NULL)
- {
- if (n)
- {
- *n = len;
- }
- return demangled;
- }
- if (*n < len+1)
+ if (!buf || (*n < len+1))
{
buf = static_cast<char*>(realloc(buf, len+1));
}
OpenPOWER on IntegriCloud