aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Turner2010-11-29 18:22:31 +0000
committerDavid Turner2010-11-29 18:22:31 +0000
commit91a6b7f5372bfb93a1a7816ea1b7f3a5c65164fd (patch)
tree75c44a3670ea01752f991889aa3f7e09412fec3b
parent0e90a2a808599aafeebd424cda2a8c46505e84fa (diff)
downloadscummvm-rg350-91a6b7f5372bfb93a1a7816ea1b7f3a5c65164fd.tar.gz
scummvm-rg350-91a6b7f5372bfb93a1a7816ea1b7f3a5c65164fd.tar.bz2
scummvm-rg350-91a6b7f5372bfb93a1a7816ea1b7f3a5c65164fd.zip
BACKENDS: Improve safety of Modular Backend Destructor And Close _fsFactory Memory Leak
Since the modular backend implements abstract modules to be written in the future which _may_ have interdependencies, they should be set to null pointers after deletion. This allows assert(_eventManager) type lines to work, which would have detected bug #3121841 without a segfault... Also, _fsFactory should be deleted to ensure it is not leaked though this causes a group of GCC warnings and probably should be done in a different manner. svn-id: r54580
-rw-r--r--backends/modular-backend.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/backends/modular-backend.cpp b/backends/modular-backend.cpp
index 4159a83ab0..095488365e 100644
--- a/backends/modular-backend.cpp
+++ b/backends/modular-backend.cpp
@@ -40,13 +40,22 @@ ModularBackend::ModularBackend()
}
ModularBackend::~ModularBackend() {
+ delete _fsFactory;
+ _fsFactory = 0;
delete _graphicsManager;
+ _graphicsManager = 0;
delete _eventManager;
+ _eventManager = 0;
delete _mixer;
+ _mixer = 0;
delete _audiocdManager;
+ _audiocdManager = 0;
delete _savefileManager;
+ _savefileManager = 0;
delete _timerManager;
+ _timerManager = 0;
delete _mutexManager;
+ _mutexManager = 0;
}
bool ModularBackend::hasFeature(Feature f) {