Version: 1.3.92 (using KDE 3.3.91 (beta1), compiled sources) Compiler: gcc version 3.4.3 20050110 (Gentoo Linux 3.4.3.20050110, ssp-3.4.3.20050110-0, pie-8.7.7) OS: Linux (x86_64) release 2.6.9-gentoo-r1 hangs if a containment connection is drawn between a package and an interface, if there already exists one in the other direction
Confirmed: new class diagram, add 2 classes, make a containment association from first to second, make a containment association from second to first, hangs. Backtrace: #0 0xb712b0a9 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #1 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #2 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #3 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 ...etc... #100 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #101 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #102 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #103 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #104 0xb712b0a8 in QListViewItem::depth () from /usr/lib/libqt-mt.so.3 #105 0xb7130409 in QListView::widthChanged () from /usr/lib/libqt-mt.so.3 #106 0xb712b2db in QListViewItem::widthChanged () from /usr/lib/libqt-mt.so.3 #107 0xb7124910 in QListViewItem::setup () from /usr/lib/libqt-mt.so.3 #108 0xb712522a in QListViewItem::setPixmap () from /usr/lib/libqt-mt.so.3 #109 0x081b575e in UMLListViewItem::updateObject (this=0x85910d0) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:267 #110 0x081b4805 in UMLListViewItem (this=0x85910d0, parent=0x8590f68, name=@0xbffdea70, t=lvt_Class, o=0x861ef70) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:79 #111 0x081b6d1c in UMLListViewItem::deepCopy (this=0x8590e00, newParent=0x8590f68) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:575 #112 0x081b6d9e in UMLListViewItem::deepCopy (this=0x8590c98, newParent=0x8590e00) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:580 ...etc... #1281 0x081b6d9e in UMLListViewItem::deepCopy (this=0x84e8108, newParent=0x85b5230) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:580 #1282 0x081b6d9e in UMLListViewItem::deepCopy (this=0x84e8400, newParent=0x84e8108) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:580 #1283 0x081ac6ac in UMLListView::moveObject (this=0x84a8ce8, srcId= {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<No data fields>}, _M_p = 0x8373f2c "12"}, static _S_empty_rep_storage = {0, 0, 0, 0}}, srcType=lvt_Class, newParent=0x84e8108) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistview.cpp:1146 #1284 0x081c683b in UMLView::setAssoc (this=0x84db490, pWidget=0x85ebb80) at /home/jr/devel/kdesdk/umbrello/umbrello/umlview.cpp:2052 #1285 0x081d1a78 in UMLWidget::mouseReleaseEvent (this=0x85ebb80, me=0x86fe988) at /home/jr/devel/kdesdk/umbrello/umbrello/umlwidget.cpp:366 #1286 0x08184a86 in ToolBarState::mouseRelease (this=0x85b5760, ome=0xbfffecc0) at /home/jr/devel/kdesdk/umbrello/umbrello/toolbarstate.cpp:79 #1287 0x08185d78 in ToolBarStateAssociation::mouseRelease (this=0x85b5760, ome=0xbfffecc0) at /home/jr/devel/kdesdk/umbrello/umbrello/toolbarstateassociation.cpp:53 #1288 0x081bf0f5 in UMLView::contentsMouseReleaseEvent (this=0x84db490, ome=0xbfffecc0) at /home/jr/devel/kdesdk/umbrello/umbrello/umlview.cpp:376 #1289 0xb715cf02 in QScrollView::viewportMouseReleaseEvent () from /usr/lib/libqt-mt.so.3 #1290 0xb715c7b9 in QScrollView::eventFilter () from /usr/lib/libqt-mt.so.3 #1291 0xb7044e4e in QObject::activate_filters () from /usr/lib/libqt-mt.so.3 #1292 0xb7044d7c in QObject::event () from /usr/lib/libqt-mt.so.3 #1293 0xb707d5ff in QWidget::event () from /usr/lib/libqt-mt.so.3 #1294 0xb6feabbf in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 #1295 0xb6fea2b4 in QApplication::notify () from /usr/lib/libqt-mt.so.3 #1296 0xb76803c0 in KApplication::notify (this=0xbffff750, receiver=0x84db9e8, event=0xbffff1b0) at /home/jr/devel/kdelibs/kdecore/kapplication.cpp:549 #1297 0xb6f7f630 in QETWidget::translateMouseEvent () from /usr/lib/libqt-mt.so.3 #1298 0xb6f7d2be in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3 #1299 0xb6f94194 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3 #1300 0xb6ffcf18 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3 #1301 0xb6ffcdc8 in QEventLoop::exec () from /usr/lib/libqt-mt.so.3 #1302 0xb6feae11 in QApplication::exec () from /usr/lib/libqt-mt.so.3 #1303 0x0816a5f1 in main (argc=1, argv=0xbffff8f4) at /home/jr/devel/kdesdk/umbrello/umbrello/main.cpp:91
SVN commit 470948 by okellogg: allowAssociation(Association_Type,UMLWidget*,UMLWidget*,bool): Prevent mutual compositions and containments. BUG:98369 M +4 -4 assocrules.cpp --- branches/KDE/3.5/kdesdk/umbrello/umbrello/assocrules.cpp #470947:470948 @@ -138,15 +138,15 @@ case at_Coll_Message: case at_Aggregation: case at_Relationship: - case at_Composition: - case at_Containment: - return true;//doesn't matter whats already connected to widget + return true; // doesn't matter what's already connected to widget break; + case at_Composition: // can't have mutual composition + case at_Containment: // can't have mutual containment case at_Generalization://can have many sub/super types but can't sup/sub each while( ( assoc = it.current() ) ) { if( ( widgetA == assoc -> getWidget(A) || widgetA == assoc -> getWidget(B) ) - && assoc -> getAssocType() == at_Generalization ) + && assoc->getAssocType() == assocType ) return false; ++it; }