]> Pileus Git - ~andy/gtk/commitdiff
Free the lines even if there are no views. (#408018, Albert Huang)
authorMatthias Clasen <mclasen@redhat.com>
Thu, 15 Feb 2007 20:38:21 +0000 (20:38 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 15 Feb 2007 20:38:21 +0000 (20:38 +0000)
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

ChangeLog
gtk/gtktextbtree.c

index 0d5ca916cfb6d28709c5169eecaadc55b109416f..266a55335622a78b5a79a8042b6c84b44ecb19b1 100644 (file)
--- 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 
index d8e436d74a7a0f5e5d553e1b08917853dfd9666a..7601803371e23cd6c17d2eacba11eab7eaa17c5a 100644 (file)
@@ -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;