From: Eric Bollengier Date: Tue, 22 Feb 2011 16:16:55 +0000 (+0100) Subject: Use system malloc in strack_trace() instead of smartalloc X-Git-Tag: Release-7.0.0~1097 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=378eda071a15d28ab317cdc2ffc674ce0517e242;p=bacula%2Fbacula Use system malloc in strack_trace() instead of smartalloc --- diff --git a/bacula/src/lib/bsys.c b/bacula/src/lib/bsys.c index 60b488731d..c1a638e88a 100644 --- a/bacula/src/lib/bsys.c +++ b/bacula/src/lib/bsys.c @@ -766,45 +766,42 @@ void stack_trace() stack_strings = backtrace_symbols(stack_addrs, stack_depth); for (size_t i = 3; i < stack_depth; i++) { - size_t sz = 200; // just a guess, template names will go much wider - char *function = (char *)malloc(sz); + size_t sz = 200; /* just a guess, template names will go much wider */ + char *function = (char *)actuallymalloc(sz); char *begin = 0, *end = 0; - // find the parentheses and address offset surrounding the mangled name + /* find the parentheses and address offset surrounding the mangled name */ for (char *j = stack_strings[i]; *j; ++j) { if (*j == '(') { begin = j; - } - else if (*j == '+') { + } else if (*j == '+') { end = j; } } if (begin && end) { *begin++ = '\0'; *end = '\0'; - // found our mangled name, now in [begin, end) + /* found our mangled name, now in [begin, end] */ int status; char *ret = abi::__cxa_demangle(begin, function, &sz, &status); if (ret) { - // return value may be a realloc() of the input + /* return value may be a realloc() of the input */ function = ret; - } - else { - // demangling failed, just pretend it's a C function with no args + } else { + /* demangling failed, just pretend it's a C function with no args */ strncpy(function, begin, sz); strncat(function, "()", sz); function[sz-1] = '\0'; } Pmsg2(000, " %s:%s\n", stack_strings[i], function); - } - else - { - // didn't find the mangled name, just print the whole line + + } else { + /* didn't find the mangled name, just print the whole line */ Pmsg1(000, " %s\n", stack_strings[i]); } - free(function); + actuallyfree(function); } - free(stack_strings); // malloc()ed by backtrace_symbols + actuallyfree(stack_strings); /* malloc()ed by backtrace_symbols */ } #else /* HAVE_BACKTRACE && HAVE_GCC */ void stack_trace() {}