From dd83258aaf5586852ba72930b625cceb462de8e1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 15 Feb 2007 20:44:28 +0000 Subject: [PATCH] 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=/branches/gtk-2-10/; revision=17303 --- ChangeLog | 7 +++++++ gtk/gtktextbtree.c | 15 +++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2c6256c89e..8fd884250b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-02-15 Matthias Clasen + + Merged from trunk: + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): Free the lines + even if there are no views. (#408018, Albert Huang) + 2007-02-15 Cody Russell Backport from trunk: 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;