From: Marek Kasik Date: Tue, 17 Apr 2018 13:54:24 +0000 (+0200) Subject: TextView: Don't access already disposed text mark X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~354^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0abf8efd2f22b9cbe94f96bf9218dec915c60fce;p=gtk4.git TextView: Don't access already disposed text mark Instead of asking of TextMark for its buffer, let's reference also the buffer in the SelectionData. Closes #169 --- diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index b0d53652be..fbf80b6e8b 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -6987,17 +6987,20 @@ typedef struct SelectionGranularity granularity; GtkTextMark *orig_start; GtkTextMark *orig_end; + GtkTextBuffer *buffer; } SelectionData; static void selection_data_free (SelectionData *data) { if (data->orig_start != NULL) - gtk_text_buffer_delete_mark (gtk_text_mark_get_buffer (data->orig_start), - data->orig_start); + gtk_text_buffer_delete_mark (data->buffer, data->orig_start); + if (data->orig_end != NULL) - gtk_text_buffer_delete_mark (gtk_text_mark_get_buffer (data->orig_end), - data->orig_end); + gtk_text_buffer_delete_mark (data->buffer, data->orig_end); + + g_object_unref (data->buffer); + g_slice_free (SelectionData, data); } @@ -7277,6 +7280,7 @@ gtk_text_view_start_selection_drag (GtkTextView *text_view, &orig_start, TRUE); data->orig_end = gtk_text_buffer_create_mark (buffer, NULL, &orig_end, TRUE); + data->buffer = g_object_ref (buffer); gtk_text_view_check_cursor_blink (text_view); g_object_set_qdata_full (G_OBJECT (priv->drag_gesture),