[Uml-devel] branches/KDE/3.5/kdesdk/umbrello
Oliver Kellogg
okellogg at users.sourceforge.net
Mon Oct 23 19:11:49 UTC 2006
SVN commit 598502 by okellogg:
removeAllAssociations(): Do not increment the iterator when positioned on an
association. Remove the association from m_List unconditionally.
BUG:135479
M +4 -0 ChangeLog
M +1 -1 VERSION
M +7 -6 umbrello/umlcanvasobject.cpp
--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #598501:598502
@@ -1,3 +1,7 @@
+Version 1.5.51
+* This is an interim release that fixes a serious regression in version 1.5.5
+ which is detailed at http://bugs.kde.org/135749 (Crash when opening a document)
+
Version 1.5.5
* PHP5 generator creates stub methods for all interfaces a class implements (C. Brunsdon)
--- branches/KDE/3.5/kdesdk/umbrello/VERSION #598501:598502
@@ -1 +1 @@
-1.5.5
+1.5.51
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/umlcanvasobject.cpp #598501:598502
@@ -95,17 +95,18 @@
void UMLCanvasObject::removeAllAssociations() {
UMLObject *o;
- for (UMLObjectListIt oit(m_List); (o = oit.current()) != NULL; ++oit) {
- if (o->getBaseType() != Uml::ot_Association)
+ for (UMLObjectListIt oit(m_List); (o = oit.current()) != NULL; ) {
+ if (o->getBaseType() != Uml::ot_Association) {
+ ++oit;
continue;
+ }
UMLAssociation *assoc = static_cast<UMLAssociation*>(o);
//umldoc->slotRemoveUMLObject(assoc);
UMLObject* objA = assoc->getObject(Uml::A);
UMLObject* objB = assoc->getObject(Uml::B);
UMLCanvasObject *roleAObj = dynamic_cast<UMLCanvasObject*>(objA);
if (roleAObj) {
- if (roleAObj->removeAssociation(assoc) < 0)
- m_List.remove(assoc);
+ roleAObj->removeAssociation(assoc);
} else if (objA)
kdDebug() << "UMLCanvasObject::removeAllAssociations(" << m_Name
<< "): objA " << objA->getName() << " is not a UMLCanvasObject"
@@ -115,8 +116,7 @@
<< "): objA is NULL" << endl;
UMLCanvasObject *roleBObj = dynamic_cast<UMLCanvasObject*>(objB);
if (roleBObj) {
- if (roleBObj->removeAssociation(assoc) < 0)
- m_List.remove(assoc);
+ roleBObj->removeAssociation(assoc);
} else if (objB)
kdDebug() << "UMLCanvasObject::removeAllAssociations(" << m_Name
<< "): objB " << objB->getName() << " is not a UMLCanvasObject"
@@ -124,6 +124,7 @@
else
kdDebug() << "UMLCanvasObject::removeAllAssociations(" << m_Name
<< "): objB is NULL" << endl;
+ m_List.remove(assoc);
//delete assoc; should not do this here, we are only a CLIENT of the assoc
}
}
More information about the umbrello-devel
mailing list