diff --git a/src/os/unix/crashlog_unix.cpp b/src/os/unix/crashlog_unix.cpp index 0a6035529e..b0cb303a4e 100644 --- a/src/os/unix/crashlog_unix.cpp +++ b/src/os/unix/crashlog_unix.cpp @@ -590,18 +590,19 @@ class CrashLogUnix : public CrashLog { demangled = abi::__cxa_demangle(func_name, nullptr, 0, &status); #endif /* WITH_DEMANGLE */ const char *name = (demangled != nullptr && status == 0) ? demangled : func_name; - buffer += seprintf(buffer, last, " [%02i] %*p %-40s %s + 0x%zx\n", i, ptr_str_size, + buffer += seprintf(buffer, last, " [%02i] %*p %-40s %s + 0x%zx", i, ptr_str_size, trace[i], info.dli_fname, name, (char *)trace[i] - (char *)func_addr); free(demangled); } else if (dladdr_result && info.dli_fname) { - buffer += seprintf(buffer, last, " [%02i] %*p %-40s + 0x%zx\n", i, ptr_str_size, + buffer += seprintf(buffer, last, " [%02i] %*p %-40s + 0x%zx", i, ptr_str_size, trace[i], info.dli_fname, (char *)trace[i] - (char *)info.dli_fbase); } else { ok = false; } - if (file_name != nullptr) { - buffer += seprintf(buffer, last, "%*s%s:%u\n", 7 + ptr_str_size, "", file_name, line_num); + if (ok && file_name != nullptr) { + buffer += seprintf(buffer, last, " at %s:%u", file_name, line_num); } + if (ok) buffer += seprintf(buffer, last, "\n"); #if defined(WITH_BFD) if (ok && bfd_info.found && bfd_info.abfd) { uint iteration_limit = 32; @@ -613,15 +614,16 @@ class CrashLogUnix : public CrashLog { demangled = abi::__cxa_demangle(func_name, nullptr, 0, &status); #endif /* WITH_DEMANGLE */ const char *name = (demangled != nullptr && status == 0) ? demangled : func_name; - buffer += seprintf(buffer, last, " [inlined] %*s %s\n", ptr_str_size + 36, "", + buffer += seprintf(buffer, last, " [inlined] %*s %s", ptr_str_size + 36, "", name); free(demangled); } else if (file_name) { - buffer += seprintf(buffer, last, " [inlined]\n"); + buffer += seprintf(buffer, last, " [inlined]"); } if (file_name != nullptr) { - buffer += seprintf(buffer, last, "%*s%s:%u\n", 7 + ptr_str_size, "", file_name, line_num); + buffer += seprintf(buffer, last, " at %s:%u", file_name, line_num); } + buffer += seprintf(buffer, last, "\n"); } } #endif /* WITH_BFD */