diff options
author | Matthias Clasen <mclasen@redhat.com> | 2007-02-15 20:38:21 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2007-02-15 20:38:21 +0000 |
commit | a2c86932f53cc7350a248223a15bf081c6cba678 (patch) | |
tree | 9b10c7f1a5caa57a39a9aef57b44ec001aec8a7f /gtk/gtktextbtree.c | |
parent | 8e285edc3c3b256a4835ff5a352080d7db45aee8 (diff) | |
download | gtk+-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.c | 15 |
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; |