summaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog5
-rw-r--r--gtk/gtktextbtree.c15
2 files changed, 16 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d5ca916cf..266a553356 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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)
+
2007-02-15 Cody Russell <bratsche@gnome.org>
* gdk/win32/gdkevents-win32.c: Make sure we get enough main context
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;