From a2c86932f53cc7350a248223a15bf081c6cba678 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 15 Feb 2007 20:38:21 +0000 Subject: Free the lines even if there are no views. (#408018, Albert Huang) 2007-02-15 Matthias Clasen * gtk/gtktextbtree.c (_gtk_text_btree_delete): Free the lines even if there are no views. (#408018, Albert Huang) svn path=/trunk/; revision=17302 --- gtk/gtktextbtree.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'gtk/gtktextbtree.c') diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c index d8e436d74a..7601803371 100644 --- a/gtk/gtktextbtree.c +++ b/gtk/gtktextbtree.c @@ -738,6 +738,7 @@ _gtk_text_btree_delete (GtkTextIter *start, GtkTextBTree *tree; GtkTextLine *start_line; GtkTextLine *end_line; + GtkTextLine *line; GtkTextLine *deleted_lines = NULL; /* List of lines we've deleted */ gint start_byte_offset; @@ -989,7 +990,6 @@ _gtk_text_btree_delete (GtkTextIter *start, view = tree->views; while (view) { - GtkTextLine *line; GtkTextLineData *ld; gint deleted_width = 0; @@ -1007,9 +1007,6 @@ _gtk_text_btree_delete (GtkTextIter *start, deleted_height += ld->height; } - if (!view->next) - gtk_text_line_destroy (tree, line); - line = next_line; } @@ -1043,6 +1040,16 @@ _gtk_text_btree_delete (GtkTextIter *start, view = view->next; } + line = deleted_lines; + while (line) + { + GtkTextLine *next_line = line->next; + + gtk_text_line_destroy (tree, line); + + line = next_line; + } + /* avoid dangling pointer */ deleted_lines = NULL; -- cgit v1.2.1