summaryrefslogtreecommitdiff
path: root/gtk/gtktextbtree.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-02-15 20:38:21 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-02-15 20:38:21 +0000
commita2c86932f53cc7350a248223a15bf081c6cba678 (patch)
tree9b10c7f1a5caa57a39a9aef57b44ec001aec8a7f /gtk/gtktextbtree.c
parent8e285edc3c3b256a4835ff5a352080d7db45aee8 (diff)
downloadgtk+-a2c86932f53cc7350a248223a15bf081c6cba678.tar.gz
Free the lines even if there are no views. (#408018, Albert Huang)
2007-02-15 Matthias Clasen <mclasen@redhat.com> * gtk/gtktextbtree.c (_gtk_text_btree_delete): Free the lines even if there are no views. (#408018, Albert Huang) svn path=/trunk/; revision=17302
Diffstat (limited to 'gtk/gtktextbtree.c')
-rw-r--r--gtk/gtktextbtree.c15
1 files changed, 11 insertions, 4 deletions
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;