Some comments about heap-objects and cleaning up some heap-objects.
authorMikko Keinänen <mikko.keinanen@gmail.com>
Thu, 18 Nov 2010 22:05:30 +0000 (00:05 +0200)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Thu, 18 Nov 2010 22:05:30 +0000 (00:05 +0200)
src/dialogs/dbobjectdialog.cpp
src/dialogs/executableeditdialog.cpp
src/dialogs/mediaimagepathdialog.cpp
src/dialogs/setupeditdialog.cpp
src/emulauncher.cpp
src/widgets/efcombobox.cpp

index 206e8be..6799744 100644 (file)
@@ -113,7 +113,10 @@ void DbObjectDialog::editObject()
     deleteCurrentObject();
     try {
         dbObject = dbManager->getDataObjectFromModel(&index); // throws EmuFrontException
-    } catch (EmuFrontException &e) { errorMessage->showMessage(e.what()); }
+    } catch (EmuFrontException &e) {
+        errorMessage->showMessage(e.what());
+        return;
+    }
     activateNameDialog();
     nameDialog->setDataObject(dbObject);
 }
index ca640a8..b878a97 100644 (file)
@@ -154,6 +154,7 @@ void ExecutableEditDialog::setSelectedSetup(const Setup *su)
     setupComBox->setSelected(su);
 }
 
+/* Returns a pointer to a Setup object which must be deleted by calling code! */
 Setup* ExecutableEditDialog::getSelectedSetup()
 {
     EmuFrontObject *o = 0;
index f3b4b1e..facdf1a 100644 (file)
@@ -100,6 +100,7 @@ void MediaImagePathDialog::setSelectedSetup(const Setup *sup)
     setupComBox->setSelected(sup);
 }
 
+/* Returns a pointer to Setup object which must be deleted by calling code */
 Setup* MediaImagePathDialog::getSelectedSetup()
 {
     EmuFrontObject *ob = 0;
index 0b4f18a..e46214b 100644 (file)
@@ -143,6 +143,7 @@ void SetupEditDialog::setSelectedMediaType(const MediaType *plf)
     mediaTypeComBox->setSelected(plf);
 }
 
+/* Returns a pointer to an object which must be deleted by calling code */
 Platform* SetupEditDialog::getSelectedPlatform()
 {
     EmuFrontObject *o = 0;
@@ -156,6 +157,7 @@ Platform* SetupEditDialog::getSelectedPlatform()
     return plf;
 }
 
+/* Returns a pointer to an object which must be deleted by calling code */
 MediaType* SetupEditDialog::getSelectedMediaType()
 {
     EmuFrontObject *o = 0;
index 890d5e0..f141afe 100644 (file)
@@ -104,18 +104,20 @@ void EmuLauncher::updateMediaImageContainers()
 {
     qDebug() << "updateMediaImageContainers slot";
     int mtid, plfid = -1;
+    MediaType *mt = 0;
+    Platform *plf = 0;
     try {
-        mtid = mediaTypeSelectBox->getSelected()
-                   ? mediaTypeSelectBox->getSelected()->getId()
-                   : -1;
-        plfid = platformSelectBox->getSelected()
-                    ? platformSelectBox->getSelected()->getId()
-                    : -1;
+        mt = dynamic_cast<MediaType*>(mediaTypeSelectBox->getSelected());
+        plf = dynamic_cast<Platform*>(platformSelectBox->getSelected());
     }
     catch(EmuFrontException &e){
         errorMessage->showMessage(e.what());
         return;
     }
+    mtid = mt ? mt->getId() : -1;
+    plfid = plf ? plf->getId() : -1;
+    if (mt) delete mt;
+    if (plf) delete plf;
 
     if (!dbMic) dbMic = new DbMediaImageContainer(this);
     dbMic->filter(mtid, plfid);
index bcd32b1..5a8db80 100644 (file)
@@ -44,7 +44,12 @@ void EFComboBox::updateDataModel(bool reset)
         setModel(model);
 }
 
-/* Throws EmuFrontException */
+/*
+    Returns a pointer to EmuFrontObject which should be deleted
+    later by calling code!
+
+    Throws EmuFrontException
+*/
 EmuFrontObject* EFComboBox::getSelected() const
 {
     EmuFrontObject *efo = 0;