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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -325,11 +325,10 @@ void Fight::clearData() {
clearSequences(_data->player);
clearSequences(_data->opponent);
delete _data->player;
delete _data->opponent;
SAFE_DELETE(_data->player);
SAFE_DELETE(_data->opponent);
delete _data;
_data = NULL;
SAFE_DELETE(_data);
_engine->restoreEventHandlers();
}
@ -343,7 +342,7 @@ void Fight::clearSequences(Fighter *combatant) const {
// Free sequences
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() {
delete _action;
delete _beetle;
delete _fight;
delete _entities;
delete _saveload;
delete _state;
SAFE_DELETE(_action);
SAFE_DELETE(_beetle);
SAFE_DELETE(_fight);
SAFE_DELETE(_entities);
SAFE_DELETE(_saveload);
SAFE_DELETE(_state);
// Zero-out passed pointers
_engine = NULL;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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