Debugger: Fix object leakage on shutdown and heap-use-after-free.

Task-number: QTCREATORBUG-15938
Change-Id: I437756705c33730398a129651fabe34c92334656
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
hjk
2016-03-24 13:59:05 +01:00
parent af55f36eaf
commit 259c3cb4d4
4 changed files with 56 additions and 51 deletions

View File

@@ -61,7 +61,7 @@ public:
Qt::DockWidgetArea area = Qt::BottomDockWidgetArea);
QByteArray dockId;
QWidget *widget = 0;
QPointer<QWidget> widget;
QByteArray anchorDockId;
OperationType operationType;
bool visibleByDefault;
@@ -115,14 +115,12 @@ public:
void resetCurrentPerspective();
void restorePerspective(const QByteArray &perspectiveId);
void finalizeSetup(Core::IMode *mode, QWidget *central = 0);
void finalizeSetup();
void showStatusMessage(const QString &message, int timeoutMS);
QDockWidget *dockWidget(const QByteArray &dockId) const;
QByteArray currentPerspective() const { return m_currentPerspectiveId; }
QWidget *modeWindow();
private:
QDockWidget *registerDockWidget(const QByteArray &dockId, QWidget *widget);
void loadPerspectiveHelper(const QByteArray &perspectiveId, bool fromStoredSettings = true);
@@ -136,14 +134,10 @@ private:
QHash<QByteArray, QDockWidget *> m_dockForDockId;
QHash<QByteArray, QWidget *> m_toolbarForPerspectiveId;
QHash<QByteArray, Perspective> m_perspectiveForPerspectiveId;
// list of dock widgets to prevent memory leak
typedef QPointer<QDockWidget> DockPtr;
QList<DockPtr> m_dockWidgets;
QWidget *m_modeWindow = 0;
};
QWidget *createModeWindow(Core::IMode *mode, DebuggerMainWindow *mainWindow, QWidget *central);
} // Utils
#endif // DEBUGGERMAINWINDOW_H