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

List:       kde-bugs-dist
Subject:    [Bug 149356] crash on exit after loading phonon design.xmi
From:       Oliver Kellogg <okellogg () users ! sourceforge ! net>
Date:       2007-08-31 23:15:01
Message-ID: 20070831231501.19576.qmail () ktown ! kde ! org
[Download RAW message or body]

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
         
http://bugs.kde.org/show_bug.cgi?id=149356         
okellogg users sourceforge net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From okellogg users sourceforge net  2007-09-01 01:14 -------
SVN commit 707073 by okellogg:

removeAllAssociationEnds(): I tried different iteration schemes (e.g. using
UMLObjectListIt or UMLObjectList::iterator) but the only one that works for me
without crashing is this here, using the integer index and QList::removeAt().
BUG:149356


 M  +2 -1      ChangeLog.2  
 M  +5 -10     umbrello/umlcanvasobject.cpp  


--- trunk/KDE/kdesdk/umbrello/ChangeLog.2 #707072:707073
 @ -15,7 +15,7  @
       * Found / Lost Messages.
   - Sequence Diagram
       * Pre/Post conditions.
-      * ‘accept time event' symbol.
+      * "accept time event" symbol.
       * Control Flow.
       * Object Flow.
       * interruptible region.
 @ -31,4 +31,5  @
 * RMB LogicalView->New->Class in treeview creates TWO classes (144537)
 * New code generator for D language
 * Add option for automatic drawing attribute associations in class diagram (147061)
+* Crash on exit after loading phonon design.xmi (149356)
 * Crash on saving phonon design.xmi with Advanced Code Generators enabled (149357)
--- trunk/KDE/kdesdk/umbrello/umbrello/umlcanvasobject.cpp #707072:707073
 @ -98,16 +98,11  @
 }
 
 void UMLCanvasObject::removeAllAssociationEnds() {
-    UMLObject *o = NULL;
-    for (UMLObjectListIt oit(m_List); oit.hasNext(); ) {
-        o = oit.next();
+    for (int i = 0; i < m_List.count(); ) {
+        UMLObject *o = m_List.at(i);
         if (o->getBaseType() != Uml::ot_Association) {
-            if ( oit.hasNext() ) {
-                o = oit.next();
-                continue;
-            } else {
-                break;
-            }
+            ++i;
+            continue;
         }
         UMLAssociation *assoc = static_cast<UMLAssociation*>(o);
         //umldoc->slotRemoveUMLObject(assoc);
 @ -133,7 +128,7  @
         else
             kDebug() << "UMLCanvasObject::removeAllAssociations(" << m_Name
                 << "): objB is NULL" << endl;
-        m_List.remove(assoc);
+        m_List.removeAt(i);
     }
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

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