[Uml-devel] [Bug 134566] memory protection fault when importing c++ headers

Oliver Kellogg okellogg at users.sourceforge.net
Sun Sep 24 14:30:56 UTC 2006


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=134566         
okellogg users sourceforge net changed:

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



------- Additional Comments From okellogg users sourceforge net  2006-09-24 16:30 -------
SVN commit 587943 by okellogg:

Importing POCO doesn't crash on the current wavefront but reveals a problem
 with duplicated datatypes (e.g. "const std::string&" appears many times in
 the Datatypes folder) which is fixed by r587941 and this here.
BUG:134566


 M  +11 -7     import_utils.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/umbrello/codeimport/import_utils.cpp #587942:587943
 @ -25,6 +25,7  @
 #include "../umlobject.h"
 #include "../docwindow.h"
 #include "../package.h"
+#include "../folder.h"
 #include "../enum.h"
 #include "../datatype.h"
 #include "../classifier.h"
 @ -119,6 +120,12  @
                                         QString comment,
                                         QString stereotype) {
     UMLDoc *umldoc = UMLApp::app()->getDocument();
+    UMLFolder *logicalView = umldoc->getRootFolder(Uml::mt_Logical);
+    if (parentPkg == NULL) {
+        // kdDebug() << "Import_Utils::createUMLObject(" << name
+        //     << "): parentPkg is NULL, assuming Logical View" << endl;
+        parentPkg = logicalView;
+    }
     UMLObject * o = umldoc->findUMLObject(name, type, parentPkg);
     bNewUMLObjectWasCreated = false;
     if (o == NULL) {
 @ -135,7 +142,7  @
         if (origType == NULL) {
             // Still not found. Create the stripped down type.
             if (bPutAtGlobalScope)
-                parentPkg = NULL;
+                parentPkg = logicalView;
             // Find, or create, the scopes.
             QStringList components;
             if (typeName.contains("::")) {
 @ -182,11 +189,8  @
             // Create the full given type (including adornments.)
             if (isConst)
                 name.prepend("const ");
-            if (bPutAtGlobalScope) {
-                parentPkg = NULL;
-                bPutAtGlobalScope = false;
-            }
-            o = Object_Factory::createUMLObject(Uml::ot_Datatype, name, parentPkg,
+            o = Object_Factory::createUMLObject(Uml::ot_Datatype, name,
+                                                umldoc->getDatatypeFolder(),
                                                 false); //solicitNewName
             UMLDatatype *dt = static_cast<UMLDatatype*>(o);
             UMLClassifier *c = dynamic_cast<UMLClassifier*>(origType);
 @ -236,7 +240,7  @
                                         bool isStatic /* =false */) {
     Uml::Object_Type ot = owner->getBaseType();
     Uml::Programming_Language pl = UMLApp::app()->getActiveLanguage();
-    if (ot != Uml::ot_Class && pl != Uml::pl_Java) {
+    if (! (ot == Uml::ot_Class || ot == Uml::ot_Interface && pl == Uml::pl_Java)) {
         kdDebug() << "insertAttribute: Don't know what to do with "
         << owner->getName() << " (object type " << ot << ")" << endl;
         return NULL;




More information about the umbrello-devel mailing list