OSDN Git Service

[UI][Qt] Fix some memory leaks.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 20 May 2017 17:34:42 +0000 (02:34 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 20 May 2017 17:34:42 +0000 (02:34 +0900)
source/src/qt/gui/dock_disks.cpp
source/src/qt/gui/menu_main.cpp
source/src/qt/gui/qt_input.cpp

index 1f49e70..14ef518 100644 (file)
                }                                                                                       \
        }
 
-       
-
+#define RELEASE_LABELS(lim,_l,_p)      {                       \
+               for(int i = 0; i < lim; i++) {                  \
+                       if(_l[i] != NULL) delete _l[i];         \
+                       if(_p[i] != NULL) delete _p[i];         \
+                       _l[i] = NULL;                                           \
+                       _p[i] = NULL;                                           \
+               }                                                                               \
+       }
+                       
 CSP_DockDisks::CSP_DockDisks(QWidget *parent, Qt::WindowFlags flags) :  QDockWidget(parent, flags)
 {
        QString ns, ms;
@@ -79,6 +86,15 @@ CSP_DockDisks::CSP_DockDisks(QWidget *parent, Qt::WindowFlags flags) :  QDockWid
                        
 CSP_DockDisks::~CSP_DockDisks()
 {
+       RELEASE_LABELS(8,lBinary,pBinary);
+       RELEASE_LABELS(8,lFloppyDisk,pFloppyDisk);
+       RELEASE_LABELS(2,lCMT,pCMT);
+       RELEASE_LABELS(8,lBubble,pBubble);
+       RELEASE_LABELS(8,lCart,pCart);
+       RELEASE_LABELS(8,lQuickDisk,pQuickDisk);
+       RELEASE_LABELS(2,lCompactDisc,pCompactDisc);
+       RELEASE_LABELS(8,lHardDisk,pHardDisk);
+       RELEASE_LABELS(2,lLaserDisc,pLaserDisc);
 }
 
 void CSP_DockDisks::updateLabel(int dom, int localnum, QString str)
index a5eac32..99d69b4 100644 (file)
@@ -66,11 +66,15 @@ Ui_MainWindowBase::Ui_MainWindowBase(USING_FLAGS *p, CSP_Logger *logger, QWidget
        max_vm_nodes = 0;
        ui_retranslate_completed = false;
        //csp_logger->debug_log(CSP_LOG_INFO, CSP_LOG_TYPE_GENERAL, "GUI OK");
+       driveData = NULL;
+       ledUpdateTimer = NULL;
 }
 
 Ui_MainWindowBase::~Ui_MainWindowBase()
 {
        graphicsView->releaseKeyboard();
+       if(ledUpdateTimer != NULL) delete ledUpdateTimer;
+       if(driveData != NULL) delete driveData;
        delete using_flags;
 }
 
index e7a8d63..48e905f 100644 (file)
@@ -230,6 +230,7 @@ void GLDrawClass::releaseKeyCode(void)
                delete key_table;
                key_table = NULL;
        }
+       delete fio;
 }
 
 void GLDrawClass::keyReleaseEvent(QKeyEvent *event)