[Uml-devel] KDE/kdesdk/umbrello/umbrello
Ralf Habacker
ralf.habacker at gmail.com
Thu Jan 19 15:29:55 UTC 2012
SVN commit 1274699 by habacker:
Made xmi loading more robust by adding guards to prevent cycles in uml objects.
There are still problems with cycles in UMLListViewItem::deepcopy(), which will be
addressed in an additional patch.
CCBUG: 230350
M +5 -0 package.cpp
M +12 -1 umlobject.cpp
M +1 -1 umlobject.h
--- trunk/KDE/kdesdk/umbrello/umbrello/package.cpp #1274698:1274699
@@ -133,6 +133,11 @@
uError() << "is called with a NULL object";
return false;
}
+ if (pObject == this) {
+ uError() << "adding myself as child is not allowed";
+ return false;
+ }
+
if (m_objects.indexOf(pObject) != -1) {
uDebug() << pObject->name() << " is already there";
return false;
--- trunk/KDE/kdesdk/umbrello/umbrello/umlobject.cpp #1274698:1274699
@@ -530,10 +530,21 @@
*
* @param pPkg Pointer to the class' UMLPackage.
*/
-void UMLObject::setUMLPackage(UMLPackage* pPkg)
+bool UMLObject::setUMLPackage(UMLPackage* pPkg)
{
+ if (pPkg == this) {
+ uDebug() << "setting parent to myself is not allowed";
+ return false;
+ }
+
+ if (pPkg->umlPackage() == this) {
+ uDebug() << "setting parent to an object of which I'm already the parent is not allowed";
+ return false;
+ }
+
m_pUMLPackage = pPkg;
emitModified();
+ return true;
}
/**
--- trunk/KDE/kdesdk/umbrello/umbrello/umlobject.h #1274698:1274699
@@ -112,7 +112,7 @@
QString package(const QString& separator = QString(),
bool includeRoot = false);
- void setUMLPackage(UMLPackage* pPkg);
+ bool setUMLPackage(UMLPackage* pPkg);
UMLPackage* umlPackage();
UMLPackageList packages(bool includeRoot = false) const;
More information about the umbrello-devel
mailing list