This commit is contained in:
Glenn Maynard
2003-12-22 02:20:49 +00:00
parent 9f1fb9979b
commit a21be8711d
@@ -61,21 +61,22 @@ void BacktraceNames::Demangle()
void BacktraceNames::Demangle() void BacktraceNames::Demangle()
{ {
/* demangle the name using __cxa_demangle() if needed */ /* demangle the name using __cxa_demangle() if needed */
if (Symbol.substr(0, 2) == "_Z") if( Symbol.substr(0, 2) != "_Z" )
{ return;
int status = 0; int status = 0;
const char *name = abi::__cxa_demangle(Symbol, 0, 0, &status); char *name = abi::__cxa_demangle( Symbol, 0, 0, &status );
if( name ) if( name )
Symbol = name;
else
{ {
Symbol = name;
free( name );
return;
}
switch( status ) switch( status )
{ {
case 0:
fprintf(stderr, "Something went wrong, it returned success, but failed.\n");
break;
case -1: case -1:
fprintf(stderr, "Memory allocation failure.\n"); fprintf( stderr, "Out of memory\n" );
break; break;
case -2: case -2:
fprintf( stderr, "Invalid mangled name: %s.\n", Symbol.c_str() ); fprintf( stderr, "Invalid mangled name: %s.\n", Symbol.c_str() );
@@ -84,9 +85,8 @@ void BacktraceNames::Demangle()
fprintf( stderr, "Invalid arguments.\n" ); fprintf( stderr, "Invalid arguments.\n" );
break; break;
default: default:
fprintf(stderr, "No idea what happened here."); fprintf( stderr, "Unexpected __cxa_demangle status: %i", status );
} break;
}
} }
} }
#else #else