Fix all leak-at-exit from singletons in Subsurface

Subsurface creates a lot of singleton instances on demand, but nothing
ever deleted them. Since they are singletons, these memory allocations
are technically not leaks. However, they clutter the output in valgrind
and other memory analysers, hiding the real issues.

The solution is to delete these items at exit. For the models and for
gettextFromC, the solution is to use a QScopedPointer, which will delete
its payload when it gets destroyed. For the dialogs and other widgets,
we can't do that: they need to be deleted before QApplication exits, so
we just set the parent in all of them to the main window.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Thiago Macieira 2013-11-30 09:18:04 -08:00 committed by Dirk Hohndel
parent bd7ded8894
commit b22f1da59e
12 changed files with 32 additions and 27 deletions

View file

@ -1,11 +1,12 @@
#include "completionmodels.h"
#include "dive.h"
#include "mainwindow.h"
#define CREATE_SINGLETON(X) \
X* X::instance() \
{ \
static X* self = new X(); \
return self; \
static QScopedPointer<X> self(new X()); \
return self.data(); \
}
CREATE_SINGLETON(BuddyCompletionModel);