| Summary: | hangs if a containment connection is drawn between a package and an interface, if there already exists one in the other direction | ||
|---|---|---|---|
| Product: | [Applications] umbrello | Reporter: | Joseph Wenninger <jowenn> |
| Component: | general | Assignee: | Umbrello Development Group <umbrello-devel> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Joseph Wenninger
2005-02-01 22:20:04 UTC
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;
}
|