From 135a4cd9e63de2047fb667e8c49f3a60cf341031 Mon Sep 17 00:00:00 2001 From: MarcoPolo-PasTonMolo Date: Sat, 22 Oct 2022 12:55:17 +0300 Subject: [PATCH] Fix segfault when loading from MAM When loading messages from MAM profanity would segfault. Reason was that we were freeing the timestamp of messages when displaying them and we needed it for loading MAM. --- src/ui/window.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/ui/window.c b/src/ui/window.c index dc37a5f1..dd40a534 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -2056,9 +2056,20 @@ win_redraw(ProfWin* window) void win_print_loading_history(ProfWin* window) { - GDateTime* timestamp = buffer_size(window->layout->buffer) != 0 ? buffer_get_entry(window->layout->buffer, 0)->time : g_date_time_new_now_local(); + GDateTime* timestamp; + gboolean is_buffer_empty = buffer_size(window->layout->buffer) == 0; + + if (!is_buffer_empty) { + timestamp = buffer_get_entry(window->layout->buffer, 0)->time; + } else { + timestamp = g_date_time_new_now_local(); + } + buffer_prepend(window->layout->buffer, "-", 0, timestamp, NO_DATE, THEME_ROOMINFO, NULL, NULL, LOADING_MESSAGE, NULL, NULL); - g_date_time_unref(timestamp); + + if (is_buffer_empty) + g_date_time_unref(timestamp); + win_redraw(window); }