LASTEXPRESS: Use SAFE_DELETE for class variables

svn-id: r54201
This commit is contained in:
Julien Templier 2010-11-11 14:19:44 +00:00
parent 7207d920bc
commit 521f228ced
17 changed files with 99 additions and 88 deletions

View file

@ -31,6 +31,7 @@
#include "lastexpress/data/snd.h" #include "lastexpress/data/snd.h"
#include "lastexpress/debug.h" #include "lastexpress/debug.h"
#include "lastexpress/helpers.h"
#include "common/events.h" #include "common/events.h"
#include "engines/engine.h" #include "engines/engine.h"
@ -45,21 +46,17 @@ Animation::~Animation() {
} }
void Animation::reset() { void Animation::reset() {
delete _overlay; SAFE_DELETE(_overlay);
_overlay = NULL; SAFE_DELETE(_background1);
delete _background1; SAFE_DELETE(_background2);
_background1 = NULL; SAFE_DELETE(_audio);
delete _background2;
_background2 = NULL;
delete _audio;
_audio = NULL;
_backgroundCurrent = 0; _backgroundCurrent = 0;
_chunks.clear(); _chunks.clear();
_currentChunk = NULL; _currentChunk = NULL;
delete _stream; SAFE_DELETE(_stream);
} }
bool Animation::load(Common::SeekableReadStream *stream, int flag) { bool Animation::load(Common::SeekableReadStream *stream, int flag) {

View file

@ -100,7 +100,7 @@ Debugger::Debugger(LastExpressEngine *engine) : _engine(engine), _command(NULL),
Debugger::~Debugger() { Debugger::~Debugger() {
DebugMan.clearAllDebugChannels(); DebugMan.clearAllDebugChannels();
delete _soundStream; SAFE_DELETE(_soundStream);
resetCommand(); resetCommand();
_command = NULL; _command = NULL;

View file

@ -154,7 +154,7 @@ Entity::~Entity() {
_callbacks.clear(); _callbacks.clear();
delete _data; SAFE_DELETE(_data);
// Zero-out passed pointers // Zero-out passed pointers
_engine = NULL; _engine = NULL;

View file

@ -30,6 +30,8 @@
#include "lastexpress/game/sound.h" #include "lastexpress/game/sound.h"
#include "lastexpress/helpers.h"
#include "common/array.h" #include "common/array.h"
#include "common/func.h" #include "common/func.h"
#include "common/serializer.h" #include "common/serializer.h"
@ -493,11 +495,8 @@ public:
} }
void clear() { void clear() {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++)
if (parameters[i]) SAFE_DELETE(parameters[i]);
delete parameters[i];
parameters[i] = NULL;
}
} }
// Serializable // Serializable

View file

@ -383,7 +383,9 @@ Action::Action(LastExpressEngine *engine) : _engine(engine) {
Action::~Action() { Action::~Action() {
for (int i = 0; i < (int)_actions.size(); i++) for (int i = 0; i < (int)_actions.size(); i++)
delete _actions[i]; SAFE_DELETE(_actions[i]);
_actions.clear();
// Zero-out passed pointers // Zero-out passed pointers
_engine = NULL; _engine = NULL;

View file

@ -28,6 +28,8 @@
#include "lastexpress/data/sequence.h" #include "lastexpress/data/sequence.h"
#include "lastexpress/helpers.h"
#include "common/array.h" #include "common/array.h"
#include "common/system.h" #include "common/system.h"
@ -98,8 +100,9 @@ private:
~BeetleData() { ~BeetleData() {
for (int i = 0; i < (int)sequences.size(); i++) for (int i = 0; i < (int)sequences.size(); i++)
if (sequences[i]) SAFE_DELETE(sequences[i]);
delete sequences[i];
sequences.clear();
} }
}; };

View file

@ -185,10 +185,12 @@ Entities::Entities(LastExpressEngine *engine) : _engine(engine) {
} }
Entities::~Entities() { Entities::~Entities() {
delete _header; SAFE_DELETE(_header);
for (int i = 0; i < (int)_entities.size(); i++) for (int i = 0; i < (int)_entities.size(); i++)
delete _entities[i]; SAFE_DELETE(_entities[i]);
_entities.clear();
// Zero passed pointers // Zero passed pointers
_engine = NULL; _engine = NULL;

View file

@ -325,11 +325,10 @@ void Fight::clearData() {
clearSequences(_data->player); clearSequences(_data->player);
clearSequences(_data->opponent); clearSequences(_data->opponent);
delete _data->player; SAFE_DELETE(_data->player);
delete _data->opponent; SAFE_DELETE(_data->opponent);
delete _data; SAFE_DELETE(_data);
_data = NULL;
_engine->restoreEventHandlers(); _engine->restoreEventHandlers();
} }
@ -343,7 +342,7 @@ void Fight::clearSequences(Fighter *combatant) const {
// Free sequences // Free sequences
for (int i = 0; i < (int)combatant->sequences.size(); i++) for (int i = 0; i < (int)combatant->sequences.size(); i++)
delete combatant->sequences[i]; SAFE_DELETE(combatant->sequences[i]);
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View file

@ -72,12 +72,12 @@ Logic::Logic(LastExpressEngine *engine) : _engine(engine) {
} }
Logic::~Logic() { Logic::~Logic() {
delete _action; SAFE_DELETE(_action);
delete _beetle; SAFE_DELETE(_beetle);
delete _fight; SAFE_DELETE(_fight);
delete _entities; SAFE_DELETE(_entities);
delete _saveload; SAFE_DELETE(_saveload);
delete _state; SAFE_DELETE(_state);
// Zero-out passed pointers // Zero-out passed pointers
_engine = NULL; _engine = NULL;

View file

@ -204,10 +204,10 @@ Clock::Clock(LastExpressEngine *engine) : _engine(engine), _frameMinutes(NULL),
} }
Clock::~Clock() { Clock::~Clock() {
delete _frameMinutes; SAFE_DELETE(_frameMinutes);
delete _frameHour; SAFE_DELETE(_frameHour);
delete _frameSun; SAFE_DELETE(_frameSun);
delete _frameDate; SAFE_DELETE(_frameDate);
// Zero passed pointers // Zero passed pointers
_engine = NULL; _engine = NULL;
@ -291,8 +291,8 @@ TrainLine::TrainLine(LastExpressEngine *engine) : _engine(engine), _frameLine1(N
} }
TrainLine::~TrainLine() { TrainLine::~TrainLine() {
delete _frameLine1; SAFE_DELETE(_frameLine1);
delete _frameLine2; SAFE_DELETE(_frameLine2);
// Zero passed pointers // Zero passed pointers
_engine = NULL; _engine = NULL;
@ -369,8 +369,8 @@ Menu::Menu(LastExpressEngine *engine) : _engine(engine),
} }
Menu::~Menu() { Menu::~Menu() {
delete _clock; SAFE_DELETE(_clock);
delete _trainLine; SAFE_DELETE(_trainLine);
SAFE_DELETE(_seqTooltips); SAFE_DELETE(_seqTooltips);
SAFE_DELETE(_seqEggButtons); SAFE_DELETE(_seqEggButtons);

View file

@ -51,8 +51,6 @@ SceneManager::SceneManager(LastExpressEngine *engine) : _engine(engine),
} }
SceneManager::~SceneManager() { SceneManager::~SceneManager() {
delete _sceneLoader;
// Clear frames // Clear frames
for (Common::List<SequenceFrame *>::iterator door = _doors.begin(); door != _doors.end(); ++door) for (Common::List<SequenceFrame *>::iterator door = _doors.begin(); door != _doors.end(); ++door)
SAFE_DELETE(*door); SAFE_DELETE(*door);
@ -63,8 +61,9 @@ SceneManager::~SceneManager() {
SAFE_DELETE(_clockMinutes); SAFE_DELETE(_clockMinutes);
// Clear frame queue // Clear frame queue
for (Common::List<SequenceFrame *>::iterator i = _queue.begin(); i != _queue.end(); ++i) _queue.clear();
SAFE_DELETE(*i);
SAFE_DELETE(_sceneLoader);
// Zero-out passed pointers // Zero-out passed pointers
_engine = NULL; _engine = NULL;

View file

@ -118,9 +118,12 @@ SoundManager::SoundManager(LastExpressEngine *engine) : _engine(engine), _state(
} }
SoundManager::~SoundManager() { SoundManager::~SoundManager() {
for (Common::List<SoundEntry *>::iterator i = _cache.begin(); i != _cache.end(); ++i)
SAFE_DELETE(*i);
_cache.clear(); _cache.clear();
delete _soundStream; SAFE_DELETE(_soundStream);
// Zero passed pointers // Zero passed pointers
_engine = NULL; _engine = NULL;
@ -134,6 +137,7 @@ void SoundManager::handleTimer() {
for (Common::List<SoundEntry *>::iterator i = _cache.begin(); i != _cache.end(); ++i) { for (Common::List<SoundEntry *>::iterator i = _cache.begin(); i != _cache.end(); ++i) {
SoundEntry *entry = (*i); SoundEntry *entry = (*i);
if (entry->stream == NULL) { if (entry->stream == NULL) {
SAFE_DELETE(*i);
i = _cache.reverse_erase(i); i = _cache.reverse_erase(i);
continue; continue;
} else if (!entry->isStreamed) { } else if (!entry->isStreamed) {
@ -191,7 +195,7 @@ void SoundManager::clearQueue() {
// Delete entry // Delete entry
removeEntry(entry); removeEntry(entry);
delete entry; SAFE_DELETE(entry);
i = _cache.reverse_erase(i); i = _cache.reverse_erase(i);
} }

View file

@ -71,6 +71,8 @@
#include "lastexpress/shared.h" #include "lastexpress/shared.h"
#include "lastexpress/helpers.h"
#include "common/list.h" #include "common/list.h"
#include "common/system.h" #include "common/system.h"
#include "common/serializer.h" #include "common/serializer.h"
@ -286,7 +288,10 @@ private:
} }
~SoundEntry() { ~SoundEntry() {
delete stream; // Entries that have been queued would have their streamed disposed automatically
if (!isStreamed)
SAFE_DELETE(stream);
//delete subtitle; //delete subtitle;
} }
}; };

View file

@ -42,11 +42,11 @@ State::State(LastExpressEngine *engine) : _engine(engine), _timer(0) {
} }
State::~State() { State::~State() {
delete _inventory; SAFE_DELETE(_inventory);
delete _objects; SAFE_DELETE(_objects);
delete _savepoints; SAFE_DELETE(_savepoints);
delete _state; SAFE_DELETE(_state);
delete _flags; SAFE_DELETE(_flags);
// Zero passed pointers // Zero passed pointers
_engine = NULL; _engine = NULL;

View file

@ -55,7 +55,7 @@ LastExpressEngine::LastExpressEngine(OSystem *syst, const ADGameDescription *gd)
Engine(syst), _gameDescription(gd), _debugger(NULL), _cursor(NULL), Engine(syst), _gameDescription(gd), _debugger(NULL), _cursor(NULL),
_font(NULL), _logic(NULL), _menu(NULL), _frameCounter(0), _lastFrameCount(0), _font(NULL), _logic(NULL), _menu(NULL), _frameCounter(0), _lastFrameCount(0),
_graphicsMan(NULL), _resMan(NULL), _sceneMan(NULL), _soundMan(NULL), _graphicsMan(NULL), _resMan(NULL), _sceneMan(NULL), _soundMan(NULL),
eventMouse(NULL), eventTick(NULL), eventMouseBackup(NULL), eventTickBackup(NULL) { _eventMouse(NULL), _eventTick(NULL), _eventMouseBackup(NULL), _eventTickBackup(NULL) {
// Adding the default directories // Adding the default directories
const Common::FSNode gameDataDir(ConfMan.get("path")); const Common::FSNode gameDataDir(ConfMan.get("path"));
@ -80,21 +80,21 @@ LastExpressEngine::~LastExpressEngine() {
_timer->removeTimerProc(&soundTimer); _timer->removeTimerProc(&soundTimer);
// Delete the remaining objects // Delete the remaining objects
delete _cursor; SAFE_DELETE(_cursor);
delete _font; SAFE_DELETE(_font);
delete _logic; SAFE_DELETE(_logic);
delete _menu; SAFE_DELETE(_menu);
delete _graphicsMan; SAFE_DELETE(_graphicsMan);
delete _resMan; SAFE_DELETE(_resMan);
delete _sceneMan; SAFE_DELETE(_sceneMan);
delete _soundMan; SAFE_DELETE(_soundMan);
delete _debugger; SAFE_DELETE(_debugger);
// Cleanup event handlers // Cleanup event handlers
SAFE_DELETE(eventMouse); SAFE_DELETE(_eventMouse);
SAFE_DELETE(eventTick); SAFE_DELETE(_eventTick);
SAFE_DELETE(eventMouseBackup); SAFE_DELETE(_eventMouseBackup);
SAFE_DELETE(eventTickBackup); SAFE_DELETE(_eventTickBackup);
// Zero passed pointers // Zero passed pointers
_gameDescription = NULL; _gameDescription = NULL;
@ -218,19 +218,19 @@ bool LastExpressEngine::handleEvents() {
getGameLogic()->getGameState()->getGameFlags()->frameInterval = true; getGameLogic()->getGameState()->getGameFlags()->frameInterval = true;
_lastFrameCount = _frameCounter; _lastFrameCount = _frameCounter;
if (eventMouse && eventMouse->isValid()) if (_eventMouse && _eventMouse->isValid())
(*eventMouse)(ev); (*_eventMouse)(ev);
break; break;
case Common::EVENT_RBUTTONUP: case Common::EVENT_RBUTTONUP:
getGameLogic()->getGameState()->getGameFlags()->mouseRightClick = true; getGameLogic()->getGameState()->getGameFlags()->mouseRightClick = true;
if (eventMouse && eventMouse->isValid()) if (_eventMouse && _eventMouse->isValid())
(*eventMouse)(ev); (*_eventMouse)(ev);
break; break;
case Common::EVENT_MOUSEMOVE: case Common::EVENT_MOUSEMOVE:
if (eventMouse && eventMouse->isValid()) if (_eventMouse && _eventMouse->isValid())
(*eventMouse)(ev); (*_eventMouse)(ev);
break; break;
case Common::EVENT_QUIT: case Common::EVENT_QUIT:
@ -243,8 +243,8 @@ bool LastExpressEngine::handleEvents() {
} }
// Game tick event // Game tick event
if (eventTick && eventTick->isValid()) if (_eventTick && _eventTick->isValid())
(*eventTick)(ev); (*_eventTick)(ev);
// Update the screen // Update the screen
_graphicsMan->update(); _graphicsMan->update();
@ -279,25 +279,25 @@ void LastExpressEngine::handleSoundTimer() {
/// Event Handling /// Event Handling
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
void LastExpressEngine::backupEventHandlers() { void LastExpressEngine::backupEventHandlers() {
eventMouseBackup = eventMouse; _eventMouseBackup = _eventMouse;
eventTickBackup = eventTick; _eventTickBackup = _eventTick;
} }
void LastExpressEngine::restoreEventHandlers() { void LastExpressEngine::restoreEventHandlers() {
if (eventMouseBackup == NULL || eventTickBackup == NULL) if (_eventMouseBackup == NULL || _eventTickBackup == NULL)
error("LastExpressEngine::restoreEventHandlers: restore called before backing up the event handlers!"); error("LastExpressEngine::restoreEventHandlers: restore called before backing up the event handlers!");
eventMouse = eventMouseBackup; _eventMouse = _eventMouseBackup;
eventTick = eventTickBackup; _eventTick = _eventTickBackup;
} }
void LastExpressEngine::setEventHandlers(EventHandler::EventFunction *mouse, EventHandler::EventFunction *tick) { void LastExpressEngine::setEventHandlers(EventHandler::EventFunction *mouse, EventHandler::EventFunction *tick) {
// Cleanup previous event handlers // Cleanup previous event handlers
delete eventMouse; delete _eventMouse;
delete eventTick; delete _eventTick;
eventMouse = mouse; _eventMouse = mouse;
eventTick = tick; _eventTick = tick;
} }
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////

View file

@ -141,11 +141,11 @@ private:
SoundManager *_soundMan; SoundManager *_soundMan;
// Event handlers // Event handlers
EventHandler::EventFunction *eventMouse; EventHandler::EventFunction *_eventMouse;
EventHandler::EventFunction *eventTick; EventHandler::EventFunction *_eventTick;
EventHandler::EventFunction *eventMouseBackup; EventHandler::EventFunction *_eventMouseBackup;
EventHandler::EventFunction *eventTickBackup; EventHandler::EventFunction *_eventTickBackup;
}; };
} // End of namespace LastExpress } // End of namespace LastExpress

View file

@ -30,6 +30,7 @@
#include "lastexpress/data/font.h" #include "lastexpress/data/font.h"
#include "lastexpress/debug.h" #include "lastexpress/debug.h"
#include "lastexpress/helpers.h"
#include "common/debug.h" #include "common/debug.h"
#include "common/file.h" #include "common/file.h"
@ -107,7 +108,7 @@ bool ResourceManager::loadArchive(ArchiveIndex type) {
void ResourceManager::reset() { void ResourceManager::reset() {
// Free the loaded archives // Free the loaded archives
for (Common::Array<HPFArchive *>::iterator it = _archives.begin(); it != _archives.end(); ++it) for (Common::Array<HPFArchive *>::iterator it = _archives.begin(); it != _archives.end(); ++it)
delete (*it); SAFE_DELETE(*it);
_archives.clear(); _archives.clear();
} }