[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwrite-devel
Subject:    [Bug 89042] while pressing "del" key kate crashes (crash, bt)
From:       Dominik Haumann <dhdev () gmx ! de>
Date:       2006-06-25 21:01:06
Message-ID: 20060625210106.26919.qmail () ktown ! kde ! org
[Download RAW message or body]

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=89042         




------- Additional Comments From dhdev gmx de  2006-06-25 23:01 -------
SVN commit 554957 by dhaumann:

forward port: SVN commit 554198 by kling:

Remove nodes from `markedForDeleting' when deleting them now.
Fixes issues with cleanupUnneededNodes() working on dangling pointers.

CCBUG: 89042
CCBUG: 103648


 M  +17 -5     katecodefoldinghelpers.cpp  


--- trunk/KDE/kdelibs/kate/part/katecodefoldinghelpers.cpp #554956:554957
 @ -558,7 +558,9  @
   uint endCol=node->endCol;
 
   // removes + deletes
-  delete parent->takeChild(mypos);
+  KateCodeFoldingNode *child = parent->takeChild(mypos);
+  markedForDeleting.removeAll(child);
+  delete child;
 
   if ((type>0) && (endLineValid))
     correctEndings(-type, parent, line+endLineRel/*+1*/,endCol, mypos); // why the \
hell did I add a +1 here ?  @ -582,7 +584,11  @
     // removes + deletes
     int i = parent->findChild (node);
     if (i >= 0)
-      delete parent->takeChild (i);
+    {
+      KateCodeFoldingNode *child = parent->takeChild(i);
+      markedForDeleting.removeAll(child);
+      delete child;
+    }
 
     return true;
   }
 @ -597,7 +603,9  @
       node->endLineValid = true;
       node->endLineRel = parent->child(i)->startLineRel - node->startLineRel;
 
-      delete parent->takeChild(i);
+      KateCodeFoldingNode *child = parent->takeChild(i);
+      markedForDeleting.removeAll(child);
+      delete child;
 
       count = i-mypos-1;
       if (count > 0)
 @ -829,7 +837,9  @
                 node->endLineValid = true;
                 node->endLineRel = getStartLine(parent->child(i))-line;
                 node->endCol = parent->child(i)->endCol;
-                delete parent->takeChild(i);
+                KateCodeFoldingNode *child = parent->takeChild(i);
+                markedForDeleting.removeAll( child );
+                delete child;
                 break;
               }
             }
 @ -905,7 +915,9  @
               count = node->childCount() - i - 1;
               newNode->endLineValid = true;
               newNode->endLineRel = line - getStartLine(node->child(i));
-              delete node->takeChild(i);
+              KateCodeFoldingNode *child = node->takeChild(i);
+              markedForDeleting.removeAll( child );
+              delete child;
               break;
             }
           }
_______________________________________________
KWrite-Devel mailing list
KWrite-Devel@kde.org
https://mail.kde.org/mailman/listinfo/kwrite-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic