diff --git a/app/core/gimpbacktrace-linux.c b/app/core/gimpbacktrace-linux.c index 9e4f38d12b..a76b5be2ce 100644 --- a/app/core/gimpbacktrace-linux.c +++ b/app/core/gimpbacktrace-linux.c @@ -585,6 +585,9 @@ gimp_backtrace_get_address_info (guintptr address, info->symbol_address = (guintptr) dl_info.dli_saddr; #endif + info->source_file[0] = '\0'; + info->source_line = 0; + return TRUE; } diff --git a/app/core/gimpbacktrace.h b/app/core/gimpbacktrace.h index ea676a2db5..a4ea2c2a30 100644 --- a/app/core/gimpbacktrace.h +++ b/app/core/gimpbacktrace.h @@ -31,6 +31,9 @@ struct _GimpBacktraceAddressInfo gchar symbol_name[256]; guintptr symbol_address; + + gchar source_file[256]; + gint source_line; }; diff --git a/app/widgets/gimpdashboard.c b/app/widgets/gimpdashboard.c index 7c3c90211c..f9b358a3f0 100644 --- a/app/widgets/gimpdashboard.c +++ b/app/widgets/gimpdashboard.c @@ -3899,6 +3899,43 @@ gimp_dashboard_log_write_address_map (GimpAsync *async, } } + if (n == 0 || strcmp (info->source_file, prev_info->source_file)) + { + NONEMPTY (); + + if (info->source_file[0]) + { + gimp_dashboard_log_printf (dashboard, + ""); + gimp_dashboard_log_print_escaped (dashboard, + info->source_file); + gimp_dashboard_log_printf (dashboard, + "\n"); + } + else + { + gimp_dashboard_log_printf (dashboard, + "\n"); + } + } + + if (n == 0 || info->source_line != prev_info->source_line) + { + NONEMPTY (); + + if (info->source_line) + { + gimp_dashboard_log_printf (dashboard, + "%d\n", + info->source_line); + } + else + { + gimp_dashboard_log_printf (dashboard, + "\n"); + } + } + if (empty) { gimp_dashboard_log_printf (dashboard,