[Uml-devel] KDE/kdesdk/umbrello/umbrello/codegenerators

Andi Fischer andi.fischer at hispeed.ch
Sat Sep 24 16:18:54 UTC 2011


SVN commit 1255385 by fischer:

Krazy issues 5 (crashy) fixed.

 M  +11 -6     codegenerator.cpp  
 M  +14 -9     simplecodegenerator.cpp  


--- trunk/KDE/kdesdk/umbrello/umbrello/codegenerators/codegenerator.cpp #1255384:1255385
@@ -38,8 +38,9 @@
 
 // qt includes
 #include <QtCore/QDateTime>
+#include <QtCore/QDir>
+#include <QtCore/QPointer>
 #include <QtCore/QRegExp>
-#include <QtCore/QDir>
 #include <QtCore/QTextStream>
 #include <QtXml/QDomDocument>
 #include <QtXml/QDomElement>
@@ -508,16 +509,17 @@
     }
 
     int suffix;
-    OverwriteDialogue overwriteDialog( name, outputDirectory.absolutePath(),
+    QPointer<OverwriteDialogue> overwriteDialog =
+        new OverwriteDialogue(name, outputDirectory.absolutePath(),
                                          m_applyToAllRemaining, kapp->activeWindow() );
     switch (pol->getOverwritePolicy()) {  //if it exists, check the OverwritePolicy we should use
     case CodeGenerationPolicy::Ok:              //ok to overwrite file
         filename = name + extension;
         break;
     case CodeGenerationPolicy::Ask:            //ask if we can overwrite
-        switch(overwriteDialog.exec()) {
+        switch(overwriteDialog->exec()) {
         case KDialog::Yes:  //overwrite file
-            if ( overwriteDialog.applyToAllRemaining() ) {
+            if ( overwriteDialog->applyToAllRemaining() ) {
                 pol->setOverwritePolicy(CodeGenerationPolicy::Ok);
                 filename = name + extension;
             }
@@ -533,7 +535,7 @@
                     break;
                 suffix++;
             }
-            if ( overwriteDialog.applyToAllRemaining() ) {
+            if ( overwriteDialog->applyToAllRemaining() ) {
                 pol->setOverwritePolicy(CodeGenerationPolicy::Never);
             }
             else {
@@ -541,12 +543,13 @@
             }
             break;
         case KDialog::Cancel: //don't output anything
-            if ( overwriteDialog.applyToAllRemaining() ) {
+            if ( overwriteDialog->applyToAllRemaining() ) {
                 pol->setOverwritePolicy(CodeGenerationPolicy::Cancel);
             }
             else {
                 m_applyToAllRemaining = false;
             }
+            delete overwriteDialog;
             return QString();
             break;
         }
@@ -563,10 +566,12 @@
         }
         break;
     case CodeGenerationPolicy::Cancel: //don't output anything
+        delete overwriteDialog;
         return QString();
         break;
     }
 
+    delete overwriteDialog;
     return filename;
 }
 
--- trunk/KDE/kdesdk/umbrello/umbrello/codegenerators/simplecodegenerator.cpp #1255384:1255385
@@ -5,7 +5,7 @@
  *   (at your option) any later version.                                   *
  *                                                                         *
  *   copyright (C) 2003      Brian Thomas <thomas at mail630.gsfc.nasa.gov>   *
- *   copyright (C) 2004-2010                                               *
+ *   copyright (C) 2004-2011                                               *
  *   Umbrello UML Modeller Authors <uml-devel at uml.sf.net>                  *
  ***************************************************************************/
 
@@ -33,8 +33,9 @@
 
 // qt includes
 #include <QtCore/QDateTime>
+#include <QtCore/QDir>
+#include <QtCore/QPointer>
 #include <QtCore/QRegExp>
-#include <QtCore/QDir>
 
 // system includes
 #include <cstdlib> //to get the user name
@@ -164,15 +165,16 @@
     }
 
     int suffix;
-    OverwriteDialogue overwriteDialogue( filename, outputDir.absolutePath(),
+    QPointer<OverwriteDialogue> overwriteDialogue =
+        new OverwriteDialogue(filename, outputDir.absolutePath(),
                                          m_applyToAllRemaining, kapp->activeWindow() );
     switch(commonPolicy->getOverwritePolicy()) {  //if it exists, check the OverwritePolicy we should use
     case CodeGenerationPolicy::Ok:                //ok to overwrite file
         break;
     case CodeGenerationPolicy::Ask:               //ask if we can overwrite
-        switch(overwriteDialogue.exec()) {
+        switch(overwriteDialogue->exec()) {
         case KDialog::Yes:  //overwrite file
-            if ( overwriteDialogue.applyToAllRemaining() ) {
+            if ( overwriteDialogue->applyToAllRemaining() ) {
                 commonPolicy->setOverwritePolicy(CodeGenerationPolicy::Ok);
             } else {
                 m_applyToAllRemaining = false;
@@ -186,19 +188,20 @@
                     break;
                 suffix++;
             }
-            if ( overwriteDialogue.applyToAllRemaining() ) {
+            if ( overwriteDialogue->applyToAllRemaining() ) {
                 commonPolicy->setOverwritePolicy(CodeGenerationPolicy::Never);
             } else {
                 m_applyToAllRemaining = false;
             }
             break;
         case KDialog::Cancel: //don't output anything
-            if ( overwriteDialogue.applyToAllRemaining() ) {
+            if ( overwriteDialogue->applyToAllRemaining() ) {
                 commonPolicy->setOverwritePolicy(CodeGenerationPolicy::Cancel);
             } else {
                 m_applyToAllRemaining = false;
             }
-            return NULL;
+            delete overwriteDialogue;
+            return QString();
             break;
         }
 
@@ -213,11 +216,13 @@
         }
         break;
     case CodeGenerationPolicy::Cancel: //don't output anything
-        return NULL;
+        delete overwriteDialogue;
+        return QString();
         break;
     }
 
     m_fileMap.insert(concept, filename);
+    delete overwriteDialogue;
     return filename;
 }
 




More information about the umbrello-devel mailing list