From bcaba6c60501cc5d17ea25b419bd26c76c54075a Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Thu, 10 Nov 2016 17:57:14 +0900 Subject: [PATCH] mtrack - faster with less snprintfing --- mtrack.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/mtrack.c b/mtrack.c index 8eb867e..ee29c8d 100644 --- a/mtrack.c +++ b/mtrack.c @@ -337,25 +337,39 @@ _mhook_trace_log(const char *str) } inside = 1; tot = sizeof(buf); - n = backtrace(bt, 256); strcpy(buf, str); p = buf + strlen(str); tot -= p - buf; + n = backtrace(bt, 250); strcpy(p, " =="); p += 3; tot -= 3; if (n > 0) { skip = 3; - + for (i = skip; i < n; i++) { int len = 0; Dl_info info; - + if (dladdr(bt[i], &info)) { - len = snprintf(p, tot, " %s", info.dli_sname); + if (info.dli_sname) + { + len = strlen(info.dli_sname); + p[0] = ' '; + strcpy(p + 1, info.dli_sname); + len = 1 + len; + } + else + { + strcpy(p, " #"); + len = 2; + } } else - len = snprintf(p, tot, " ?"); + { + strcpy(p, " ?"); + len = 2; + } p += len; tot -= len; } }