diff options
author | Marek Kasik <mkasik@redhat.com> | 2018-04-17 15:54:24 +0200 |
---|---|---|
committer | Marek Kasik <mkasik@redhat.com> | 2018-04-17 16:07:05 +0200 |
commit | 8da5111edd810f369711f2c7d3f3210ea87ec325 (patch) | |
tree | 3d04e6582e84cbfb3c2c1fdc376e251446f309b8 | |
parent | 2e7ac262be15fb402c4103d28533c6c6d955bf65 (diff) | |
download | gtk+-8da5111edd810f369711f2c7d3f3210ea87ec325.tar.gz |
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
-rw-r--r-- | gtk/gtktextview.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 7bf1793db6..c6d555ff2b 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -7612,17 +7612,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); } @@ -7903,6 +7906,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), |