diff --git a/hurricane/src/hurricane/Backtrace.cpp b/hurricane/src/hurricane/Backtrace.cpp index bd3d4f50..9b742bcf 100644 --- a/hurricane/src/hurricane/Backtrace.cpp +++ b/hurricane/src/hurricane/Backtrace.cpp @@ -90,7 +90,8 @@ #include #include #include -#include +//#include +#include #include namespace boptions = boost::program_options; #include "hurricane/Backtrace.h" @@ -431,7 +432,6 @@ namespace Hurricane { : _stack() { if (not enabled) return; - if (_inConstructor) { _stack.push_back( "[BUG] Backtrace::Backtrace(): An error occurred in the backtace *istself*." ); _stack.push_back( "" ); @@ -458,18 +458,27 @@ namespace Hurricane { #endif #if (defined __linux__ || defined __FreeBSD__) - std::regex re ( "([^(]+)\\(([^+]+)\\+([^)]+)\\) \\[(.+)]" ); - std::cmatch match; - string homeDir = getHome(); + //std::regex re ( "([^(]+)\\(([^+]+)\\+([^)]+)\\) \\[(.+)]", std::regex::extended ); + //std::cmatch match; + regex_t re; + regmatch_t match[5]; + string homeDir = getHome(); + regcomp( &re, "([^(]+)\\(([^+]+)\\+([^)]+)\\) \\[(.+)]", REG_EXTENDED ); for ( size_t i=0 ; i" << demangled << ""; #ifdef HAVE_LIBBFD @@ -492,6 +501,7 @@ namespace Hurricane { _stack.push_back( symbols[i] ); } } + regfree( &re ); #else #ifdef __APPLE__ std::regex re ( "(\\d+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+\\+\\s+(\\d+)" );