[Scummvm-git-logs] scummvm master -> 6576b4883ac09ee841ad55effcd1f87f70a062b8
aquadran
noreply at scummvm.org
Wed Sep 3 10:03:24 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
6576b4883a WINTERMUTE: Restore macro to make code aligned with original
Commit: 6576b4883ac09ee841ad55effcd1f87f70a062b8
https://github.com/scummvm/scummvm/commit/6576b4883ac09ee841ad55effcd1f87f70a062b8
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-09-03T12:03:16+02:00
Commit Message:
WINTERMUTE: Restore macro to make code aligned with original
Changed paths:
engines/wintermute/ad/ad_actor.cpp
engines/wintermute/ad/ad_actor_3dx.cpp
engines/wintermute/ad/ad_attach_3dx.cpp
engines/wintermute/ad/ad_block.cpp
engines/wintermute/ad/ad_entity.cpp
engines/wintermute/ad/ad_game.cpp
engines/wintermute/ad/ad_generic.cpp
engines/wintermute/ad/ad_geom_ext.cpp
engines/wintermute/ad/ad_geom_ext_node.cpp
engines/wintermute/ad/ad_inventory_box.cpp
engines/wintermute/ad/ad_item.cpp
engines/wintermute/ad/ad_layer.cpp
engines/wintermute/ad/ad_node_state.cpp
engines/wintermute/ad/ad_object.cpp
engines/wintermute/ad/ad_object_3d.cpp
engines/wintermute/ad/ad_response.cpp
engines/wintermute/ad/ad_response_box.cpp
engines/wintermute/ad/ad_response_context.cpp
engines/wintermute/ad/ad_scene.cpp
engines/wintermute/ad/ad_scene_geometry.cpp
engines/wintermute/ad/ad_scene_state.cpp
engines/wintermute/ad/ad_sentence.cpp
engines/wintermute/ad/ad_sprite_set.cpp
engines/wintermute/ad/ad_talk_def.cpp
engines/wintermute/ad/ad_talk_holder.cpp
engines/wintermute/ad/ad_talk_node.cpp
engines/wintermute/ad/ad_walkplane.cpp
engines/wintermute/base/base.cpp
engines/wintermute/base/base_file_manager.cpp
engines/wintermute/base/base_frame.cpp
engines/wintermute/base/base_game.cpp
engines/wintermute/base/base_named_object.cpp
engines/wintermute/base/base_object.cpp
engines/wintermute/base/base_persistence_manager.cpp
engines/wintermute/base/base_region.cpp
engines/wintermute/base/base_script_holder.cpp
engines/wintermute/base/base_scriptable.cpp
engines/wintermute/base/base_sprite.cpp
engines/wintermute/base/base_sub_frame.cpp
engines/wintermute/base/font/base_font_bitmap.cpp
engines/wintermute/base/font/base_font_truetype.cpp
engines/wintermute/base/gfx/3deffect_params.cpp
engines/wintermute/base/gfx/3dmesh.cpp
engines/wintermute/base/gfx/base_renderer.cpp
engines/wintermute/base/gfx/skin_mesh_helper.cpp
engines/wintermute/base/gfx/xanimation_channel.cpp
engines/wintermute/base/gfx/xanimation_set.cpp
engines/wintermute/base/gfx/xfile.cpp
engines/wintermute/base/gfx/xframe_node.cpp
engines/wintermute/base/gfx/xmesh.cpp
engines/wintermute/base/gfx/xmodel.cpp
engines/wintermute/base/particles/part_emitter.cpp
engines/wintermute/base/particles/part_particle.cpp
engines/wintermute/base/scriptables/script.cpp
engines/wintermute/base/scriptables/script_engine.cpp
engines/wintermute/base/scriptables/script_ext_array.cpp
engines/wintermute/base/scriptables/script_ext_file.cpp
engines/wintermute/base/scriptables/script_ext_string.cpp
engines/wintermute/base/sound/base_sound_buffer.cpp
engines/wintermute/dcgf.h
engines/wintermute/ui/ui_button.cpp
engines/wintermute/ui/ui_edit.cpp
engines/wintermute/ui/ui_entity.cpp
engines/wintermute/ui/ui_object.cpp
engines/wintermute/ui/ui_text.cpp
engines/wintermute/ui/ui_tiled_image.cpp
engines/wintermute/ui/ui_window.cpp
engines/wintermute/video/video_player.cpp
engines/wintermute/video/video_theora_player.cpp
diff --git a/engines/wintermute/ad/ad_actor.cpp b/engines/wintermute/ad/ad_actor.cpp
index 7d257b48fcc..e91bc3d85bd 100644
--- a/engines/wintermute/ad/ad_actor.cpp
+++ b/engines/wintermute/ad/ad_actor.cpp
@@ -44,6 +44,7 @@
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/particles/part_emitter.h"
#include "engines/wintermute/base/base_engine.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -82,19 +83,13 @@ bool AdActor::setDefaultAnimNames() {
//////////////////////////////////////////////////////////////////////////
AdActor::~AdActor() {
- delete _path;
- _path = nullptr;
- delete _targetPoint;
- _targetPoint = nullptr;
+ SAFE_DELETE(_path);
+ SAFE_DELETE(_targetPoint);
- delete _walkSprite;
- _walkSprite = nullptr;
- delete _standSprite;
- _standSprite = nullptr;
- delete _turnLeftSprite;
- _turnLeftSprite = nullptr;
- delete _turnRightSprite;
- _turnRightSprite = nullptr;
+ SAFE_DELETE(_walkSprite);
+ SAFE_DELETE(_standSprite);
+ SAFE_DELETE(_turnLeftSprite);
+ SAFE_DELETE(_turnRightSprite);
_animSprite2 = nullptr; // ref only
@@ -109,8 +104,7 @@ AdActor::~AdActor() {
_talkSpritesEx.removeAll();
for (int32 i = 0; i < _anims.getSize(); i++) {
- delete _anims[i];
- _anims[i] = nullptr;
+ SAFE_DELETE(_anims[i]);
}
_anims.removeAll();
}
@@ -285,8 +279,7 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_WALK:
- delete _walkSprite;
- _walkSprite = nullptr;
+ SAFE_DELETE(_walkSprite);
spr = new AdSpriteSet(_gameRef, this);
if (!spr || DID_FAIL(spr->loadBuffer(params, true, adGame->_texWalkLifeTime, CACHE_HALF))) {
cmd = PARSERR_GENERIC;
@@ -314,8 +307,7 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_STAND:
- delete _standSprite;
- _standSprite = nullptr;
+ SAFE_DELETE(_standSprite);
spr = new AdSpriteSet(_gameRef, this);
if (!spr || DID_FAIL(spr->loadBuffer(params, true, adGame->_texStandLifeTime))) {
cmd = PARSERR_GENERIC;
@@ -325,8 +317,7 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_TURN_LEFT:
- delete _turnLeftSprite;
- _turnLeftSprite = nullptr;
+ SAFE_DELETE(_turnLeftSprite);
spr = new AdSpriteSet(_gameRef, this);
if (!spr || DID_FAIL(spr->loadBuffer(params, true))) {
cmd = PARSERR_GENERIC;
@@ -336,8 +327,7 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_TURN_RIGHT:
- delete _turnRightSprite;
- _turnRightSprite = nullptr;
+ SAFE_DELETE(_turnRightSprite);
spr = new AdSpriteSet(_gameRef, this);
if (!spr || DID_FAIL(spr->loadBuffer(params, true))) {
cmd = PARSERR_GENERIC;
@@ -351,11 +341,10 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
@@ -389,17 +378,13 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BLOCKED_REGION: {
- delete _blockRegion;
- _blockRegion = nullptr;
- delete _currentBlockRegion;
- _currentBlockRegion = nullptr;
+ SAFE_DELETE(_blockRegion);
+ SAFE_DELETE(_currentBlockRegion);
BaseRegion *rgn = new BaseRegion(_gameRef);
BaseRegion *crgn = new BaseRegion(_gameRef);
if (!rgn || !crgn || DID_FAIL(rgn->loadBuffer(params, false))) {
- delete _blockRegion;
- _blockRegion = nullptr;
- delete _currentBlockRegion;
- _currentBlockRegion = nullptr;
+ SAFE_DELETE(_blockRegion);
+ SAFE_DELETE(_currentBlockRegion);
cmd = PARSERR_GENERIC;
} else {
_blockRegion = rgn;
@@ -410,17 +395,13 @@ bool AdActor::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_WAYPOINTS: {
- delete _wptGroup;
- _wptGroup = nullptr;
- delete _currentWptGroup;
- _currentWptGroup = nullptr;
+ SAFE_DELETE(_wptGroup);
+ SAFE_DELETE(_currentWptGroup);
AdWaypointGroup *wpt = new AdWaypointGroup(_gameRef);
AdWaypointGroup *cwpt = new AdWaypointGroup(_gameRef);
if (!wpt || !cwpt || DID_FAIL(wpt->loadBuffer(params, false))) {
- delete _wptGroup;
- _wptGroup = nullptr;
- delete _currentWptGroup;
- _currentWptGroup = nullptr;
+ SAFE_DELETE(_wptGroup);
+ SAFE_DELETE(_currentWptGroup);
cmd = PARSERR_GENERIC;
} else {
_wptGroup = wpt;
@@ -609,8 +590,7 @@ bool AdActor::update() {
if (_state == STATE_READY) {
if (_animSprite) {
- delete _animSprite;
- _animSprite = nullptr;
+ SAFE_DELETE(_animSprite);
}
if (_animSprite2) {
_animSprite2 = nullptr;
@@ -1145,8 +1125,7 @@ bool AdActor::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
_animSprite2 = nullptr;
}
- delete _anims[i];
- _anims[i] = nullptr;
+ SAFE_DELETE(_anims[i]);
_anims.removeAt(i);
i--;
found = true;
@@ -1320,14 +1299,13 @@ BaseSprite *AdActor::getTalkStance(const char *stance) {
// forced stance?
if (_forcedTalkAnimName && !_forcedTalkAnimUsed) {
_forcedTalkAnimUsed = true;
- delete _animSprite;
+ SAFE_DELETE(_animSprite);
_animSprite = new BaseSprite(_gameRef, this);
if (_animSprite) {
bool res = _animSprite->loadFile(_forcedTalkAnimName);
if (DID_FAIL(res)) {
_gameRef->LOG(res, "AdActor::GetTalkStance: error loading talk sprite (object:\"%s\" sprite:\"%s\")", _name, _forcedTalkAnimName);
- delete _animSprite;
- _animSprite = nullptr;
+ SAFE_DELETE(_animSprite);
} else {
return _animSprite;
}
diff --git a/engines/wintermute/ad/ad_actor_3dx.cpp b/engines/wintermute/ad/ad_actor_3dx.cpp
index aabeb659043..8b3dafefd1d 100644
--- a/engines/wintermute/ad/ad_actor_3dx.cpp
+++ b/engines/wintermute/ad/ad_actor_3dx.cpp
@@ -57,6 +57,7 @@
#include "engines/wintermute/base/sound/base_sound.h"
#include "engines/wintermute/utils/path_util.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -115,13 +116,10 @@ AdActor3DX::~AdActor3DX() {
}
_transitionTimes.removeAll();
- delete _path2D;
- _path2D = nullptr;
- delete _path3D;
- _path3D = nullptr;
+ SAFE_DELETE(_path2D);
+ SAFE_DELETE(_path3D);
- delete _targetPoint2D;
- _targetPoint2D = nullptr;
+ SAFE_DELETE(_targetPoint2D);
}
//////////////////////////////////////////////////////////////////////////
@@ -142,8 +140,7 @@ bool AdActor3DX::update() {
if (_sentence && _state != STATE_TALKING) {
_sentence->finish();
- delete _sentence;
- _sentence = nullptr;
+ SAFE_DELETE(_sentence);
// kill talking anim
if (_talkAnimChannel > 0)
@@ -960,10 +957,8 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
buffer = params;
}
- delete _xmodel;
- _xmodel = nullptr;
- delete _shadowModel;
- _shadowModel = nullptr;
+ SAFE_DELETE(_xmodel);
+ SAFE_DELETE(_shadowModel);
while ((cmd = parser.getCommand(&buffer, commands, ¶ms)) > 0) {
switch (cmd) {
@@ -1096,8 +1091,7 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
_xmodel = new XModel(_gameRef, this);
if (!_xmodel || !_xmodel->loadFromFile(params)) {
- delete _xmodel;
- _xmodel = nullptr;
+ SAFE_DELETE(_xmodel);
cmd = PARSERR_GENERIC;
}
} else {
@@ -1109,12 +1103,11 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
case TOKEN_SHADOW_MODEL:
if (_xmodel) {
- delete _shadowModel;
+ SAFE_DELETE(_shadowModel);
_shadowModel = new XModel(_gameRef, this);
if (!_shadowModel || !_shadowModel->loadFromFile(params, _xmodel)) {
- delete _shadowModel;
- _shadowModel = nullptr;
+ SAFE_DELETE(_shadowModel);
cmd = PARSERR_GENERIC;
}
} else {
@@ -1123,11 +1116,10 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || !_cursor->loadFile(params)) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
@@ -1168,15 +1160,13 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BLOCKED_REGION: {
- delete _blockRegion;
- _blockRegion = nullptr;
- delete _currentBlockRegion;
- _currentBlockRegion = nullptr;
+ SAFE_DELETE(_blockRegion);
+ SAFE_DELETE(_currentBlockRegion);
BaseRegion *rgn = new BaseRegion(_gameRef);
BaseRegion *crgn = new BaseRegion(_gameRef);
if (!rgn || !crgn || !rgn->loadBuffer(params, false)) {
- delete rgn;
- delete crgn;
+ SAFE_DELETE(rgn);
+ SAFE_DELETE(crgn);
cmd = PARSERR_GENERIC;
} else {
_blockRegion = rgn;
@@ -1187,15 +1177,13 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
}
case TOKEN_WAYPOINTS: {
- delete _wptGroup;
- _wptGroup = nullptr;
- delete _currentWptGroup;
- _currentWptGroup = nullptr;
+ SAFE_DELETE(_wptGroup);
+ SAFE_DELETE(_currentWptGroup);
AdWaypointGroup *wpt = new AdWaypointGroup(_gameRef);
AdWaypointGroup *cwpt = new AdWaypointGroup(_gameRef);
if (!wpt || !cwpt || !wpt->loadBuffer(params, false)) {
- delete wpt;
- delete cwpt;
+ SAFE_DELETE(wpt);
+ SAFE_DELETE(cwpt);
cmd = PARSERR_GENERIC;
} else {
_wptGroup = wpt;
@@ -1447,13 +1435,13 @@ bool AdActor3DX::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
AdAttach3DX *at = new AdAttach3DX(_gameRef, this);
if (!at || !at->init(filename, attachName, boneName)) {
script->runtimeError("Error adding attachment");
- delete at;
+ SAFE_DELETE(at);
stack->pushBool(false);
} else {
bool isSet = false;
for (int32 i = 0; i < _attachments.getSize(); i++) {
if (scumm_stricmp(_attachments[i]->_name, attachName) == 0) {
- delete _attachments[i];
+ SAFE_DELETE(_attachments[i]);
_attachments[i] = at;
isSet = true;
break;
@@ -1487,7 +1475,7 @@ bool AdActor3DX::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
bool isFound = false;
for (int32 i = 0; i < _attachments.getSize(); i++) {
if (scumm_stricmp(_attachments[i]->_name, attachmentName) == 0) {
- delete _attachments[i];
+ SAFE_DELETE(_attachments[i]);
_attachments.removeAt(i);
isFound = true;
break;
@@ -2530,8 +2518,8 @@ bool AdActor3DX::parseEffect(char *buffer) {
}
}
- delete[] effectFile;
- delete[] material;
+ SAFE_DELETE_ARRAY(effectFile);
+ SAFE_DELETE_ARRAY(material);
return true;
}
diff --git a/engines/wintermute/ad/ad_attach_3dx.cpp b/engines/wintermute/ad/ad_attach_3dx.cpp
index 2c5227c7753..ef195377357 100644
--- a/engines/wintermute/ad/ad_attach_3dx.cpp
+++ b/engines/wintermute/ad/ad_attach_3dx.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/scriptables/script_value.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -52,8 +53,7 @@ AdAttach3DX::~AdAttach3DX() {
//////////////////////////////////////////////////////////////////////////
bool AdAttach3DX::init(const char *modelFile, const char *name, const char *parentBone) {
- delete _xmodel;
- _xmodel = nullptr;
+ SAFE_DELETE(_xmodel);
_parentBone = parentBone;
setName(name);
@@ -65,8 +65,7 @@ bool AdAttach3DX::init(const char *modelFile, const char *name, const char *pare
bool res = _xmodel->loadFromFile(modelFile);
if (!res) {
- delete _xmodel;
- _xmodel = nullptr;
+ SAFE_DELETE(_xmodel);
}
return res;
diff --git a/engines/wintermute/ad/ad_block.cpp b/engines/wintermute/ad/ad_block.cpp
index b92d93bdab4..a478686bbd9 100644
--- a/engines/wintermute/ad/ad_block.cpp
+++ b/engines/wintermute/ad/ad_block.cpp
@@ -28,6 +28,7 @@
#include "engines/wintermute/ad/ad_block.h"
#include "engines/wintermute/base/base_persistence_manager.h"
#include "engines/wintermute/base/gfx/3dmesh.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -40,8 +41,7 @@ AdBlock::AdBlock(BaseGame *inGame) : BaseScriptable(inGame, false, false) {
//////////////////////////////////////////////////////////////////////////
AdBlock::~AdBlock() {
- delete _mesh;
- _mesh = nullptr;
+ SAFE_DELETE(_mesh);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp
index ff9c47eb841..fa1cfa90f00 100644
--- a/engines/wintermute/ad/ad_entity.cpp
+++ b/engines/wintermute/ad/ad_entity.cpp
@@ -53,6 +53,7 @@
#include "engines/wintermute/video/video_theora_player.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
#include "common/str.h"
@@ -81,12 +82,9 @@ AdEntity::AdEntity(BaseGame *inGame) : AdTalkHolder(inGame) {
//////////////////////////////////////////////////////////////////////////
AdEntity::~AdEntity() {
_gameRef->unregisterObject(_region);
+ SAFE_DELETE(_theora);
- delete _theora;
- _theora = nullptr;
-
- delete[] _item;
- _item = nullptr;
+ SAFE_DELETE_ARRAY(_item);
}
#ifdef ENABLE_FOXTAIL
@@ -253,8 +251,7 @@ bool AdEntity::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_SPRITE: {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
spr = new BaseSprite(_gameRef, this);
if (!spr || DID_FAIL(spr->loadFile(params))) {
cmd = PARSERR_GENERIC;
@@ -340,11 +337,10 @@ bool AdEntity::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
@@ -369,17 +365,13 @@ bool AdEntity::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BLOCKED_REGION: {
- delete _blockRegion;
- _blockRegion = nullptr;
- delete _currentBlockRegion;
- _currentBlockRegion = nullptr;
+ SAFE_DELETE(_blockRegion);
+ SAFE_DELETE(_currentBlockRegion);
BaseRegion *rgn = new BaseRegion(_gameRef);
BaseRegion *crgn = new BaseRegion(_gameRef);
if (!rgn || !crgn || DID_FAIL(rgn->loadBuffer(params, false))) {
- delete _blockRegion;
- _blockRegion = nullptr;
- delete _currentBlockRegion;
- _currentBlockRegion = nullptr;
+ SAFE_DELETE(_blockRegion);
+ SAFE_DELETE(_currentBlockRegion);
cmd = PARSERR_GENERIC;
} else {
_blockRegion = rgn;
@@ -390,17 +382,13 @@ bool AdEntity::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_WAYPOINTS: {
- delete _wptGroup;
- _wptGroup = nullptr;
- delete _currentWptGroup;
- _currentWptGroup = nullptr;
+ SAFE_DELETE(_wptGroup);
+ SAFE_DELETE(_currentWptGroup);
AdWaypointGroup *wpt = new AdWaypointGroup(_gameRef);
AdWaypointGroup *cwpt = new AdWaypointGroup(_gameRef);
if (!wpt || !cwpt || DID_FAIL(wpt->loadBuffer(params, false))) {
- delete _wptGroup;
- _wptGroup = nullptr;
- delete _currentWptGroup;
- _currentWptGroup = nullptr;
+ SAFE_DELETE(_wptGroup);
+ SAFE_DELETE(_currentWptGroup);
cmd = PARSERR_GENERIC;
} else {
_wptGroup = wpt;
@@ -416,8 +404,7 @@ bool AdEntity::loadBuffer(char *buffer, bool complete) {
case TOKEN_SUBTYPE: {
if (scumm_stricmp(params, "sound") == 0) {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
if (_gameRef->_editorMode) {
spr = new BaseSprite(_gameRef, this);
if (!spr || DID_FAIL(spr->loadFile("entity_sound.sprite"))) {
@@ -625,12 +612,11 @@ bool AdEntity::update() {
_currentSprite = nullptr;
if (_state == STATE_READY && _animSprite) {
- delete _animSprite;
- _animSprite = nullptr;
+ SAFE_DELETE(_animSprite);
}
// finished playing animation?
- if (_state == STATE_PLAYING_ANIM && _animSprite != nullptr && _animSprite->isFinished()) {
+ if (_state == STATE_PLAYING_ANIM && _animSprite != nullptr && _animSprite->_finished) {
_state = STATE_READY;
_currentSprite = _animSprite;
}
@@ -709,8 +695,7 @@ bool AdEntity::update() {
_theora->update();
if (_theora->isFinished()) {
_theora->stop();
- delete _theora;
- _theora = nullptr;
+ SAFE_DELETE(_theora);
}
}
@@ -749,7 +734,7 @@ bool AdEntity::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
ScValue *valAlpha = stack->pop();
int startTime = stack->pop()->getInt();
- delete _theora;
+ SAFE_DELETE(_theora);
_theora = new VideoTheoraPlayer(_gameRef);
if (_theora && DID_SUCCEED(_theora->initialize(filename))) {
if (!valAlpha->isNULL()) {
@@ -773,8 +758,7 @@ bool AdEntity::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
stack->correctParams(0);
if (_theora) {
_theora->stop();
- delete _theora;
- _theora = nullptr;
+ SAFE_DELETE(_theora);
stack->pushBool(true);
} else {
stack->pushBool(false);
@@ -1284,12 +1268,10 @@ bool AdEntity::setSprite(const char *filename) {
_currentSprite = nullptr;
}
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
BaseSprite *spr = new BaseSprite(_gameRef, this);
if (!spr || DID_FAIL(spr->loadFile(filename))) {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
return STATUS_FAILED;
} else {
_sprite = spr;
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index 05da76078e4..956832cdad5 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -67,6 +67,7 @@
#include "engines/wintermute/video/video_player.h"
#include "engines/wintermute/video/video_theora_player.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
#include "common/config-manager.h"
#include "common/str.h"
@@ -177,20 +178,13 @@ bool AdGame::cleanup() {
_inventoryBox = nullptr;
}
- delete[] _prevSceneName;
- delete[] _prevSceneFilename;
- delete[] _scheduledScene;
- delete[] _debugStartupScene;
- delete[] _itemsFile;
- _prevSceneName = nullptr;
- _prevSceneFilename = nullptr;
- _scheduledScene = nullptr;
- _debugStartupScene = nullptr;
- _startupScene = nullptr;
- _itemsFile = nullptr;
+ SAFE_DELETE_ARRAY(_prevSceneName);
+ SAFE_DELETE_ARRAY(_prevSceneFilename);
+ SAFE_DELETE_ARRAY(_scheduledScene);
+ SAFE_DELETE_ARRAY(_debugStartupScene);
+ SAFE_DELETE_ARRAY(_itemsFile);
- delete _sceneViewport;
- _sceneViewport = nullptr;
+ SAFE_DELETE(_sceneViewport);
for (int32 i = 0; i < _sceneStates.getSize(); i++) {
delete _sceneStates[i];
@@ -215,8 +209,7 @@ bool AdGame::cleanup() {
bool AdGame::initLoop() {
if (_scheduledScene && _transMgr->isReady()) {
changeScene(_scheduledScene, _scheduledFadeIn);
- delete[] _scheduledScene;
- _scheduledScene = nullptr;
+ SAFE_DELETE_ARRAY(_scheduledScene);
_gameRef->_activeObject = nullptr;
}
@@ -404,8 +397,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
addObject(act);
stack->pushNative(act, true);
} else {
- delete act;
- act = nullptr;
+ SAFE_DELETE(act);
stack->pushNULL();
}
return STATUS_OK;
@@ -425,8 +417,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
addObject(act);
stack->pushNative(act, true);
} else {
- delete act;
- act = nullptr;
+ SAFE_DELETE(act);
stack->pushNULL();
}
return STATUS_OK;
@@ -443,8 +434,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
addObject(ent);
stack->pushNative(ent, true);
} else {
- delete ent;
- ent = nullptr;
+ SAFE_DELETE(ent);
stack->pushNULL();
}
return STATUS_OK;
@@ -834,8 +824,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
registerObject(_responseBox);
stack->pushBool(true);
} else {
- delete _responseBox;
- _responseBox = nullptr;
+ SAFE_DELETE(_responseBox);
stack->pushBool(false);
}
return STATUS_OK;
@@ -854,8 +843,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
registerObject(_inventoryBox);
stack->pushBool(true);
} else {
- delete _inventoryBox;
- _inventoryBox = nullptr;
+ SAFE_DELETE(_inventoryBox);
stack->pushBool(false);
}
return STATUS_OK;
@@ -1253,8 +1241,7 @@ bool AdGame::scSetProperty(const char *name, ScValue *value) {
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "StartupScene") == 0) {
if (value == nullptr) {
- delete[] _startupScene;
- _startupScene = nullptr;
+ SAFE_DELETE_ARRAY(_startupScene);
} else {
BaseUtils::setString(&_startupScene, value->getString());
}
@@ -1405,25 +1392,23 @@ bool AdGame::loadBuffer(char *buffer, bool complete) {
while (cmd > 0 && (cmd = parser.getCommand(¶ms, commands, ¶ms2)) > 0) {
switch (cmd) {
case TOKEN_RESPONSE_BOX:
- delete _responseBox;
+ SAFE_DELETE(_responseBox);
_responseBox = new AdResponseBox(_gameRef);
if (_responseBox && !DID_FAIL(_responseBox->loadFile(params2))) {
registerObject(_responseBox);
} else {
- delete _responseBox;
- _responseBox = nullptr;
+ SAFE_DELETE(_responseBox);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_INVENTORY_BOX:
- delete _inventoryBox;
+ SAFE_DELETE(_inventoryBox);
_inventoryBox = new AdInventoryBox(_gameRef);
if (_inventoryBox && !DID_FAIL(_inventoryBox->loadFile(params2))) {
registerObject(_inventoryBox);
} else {
- delete _inventoryBox;
- _inventoryBox = nullptr;
+ SAFE_DELETE(_inventoryBox);
cmd = PARSERR_GENERIC;
}
break;
@@ -1432,8 +1417,7 @@ bool AdGame::loadBuffer(char *buffer, bool complete) {
itemsFound = true;
BaseUtils::setString(&_itemsFile, params2);
if (DID_FAIL(loadItemsFile(_itemsFile))) {
- delete[] _itemsFile;
- _itemsFile = nullptr;
+ SAFE_DELETE_ARRAY(_itemsFile);
cmd = PARSERR_GENERIC;
}
break;
@@ -1570,8 +1554,7 @@ bool AdGame::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
void AdGame::setPrevSceneName(const char *name) {
- delete[] _prevSceneName;
- _prevSceneName = nullptr;
+ SAFE_DELETE_ARRAY(_prevSceneName);
if (name) {
size_t nameSize = strlen(name) + 1;
_prevSceneName = new char[nameSize];
@@ -1582,8 +1565,7 @@ void AdGame::setPrevSceneName(const char *name) {
//////////////////////////////////////////////////////////////////////////
void AdGame::setPrevSceneFilename(const char *name) {
- delete[] _prevSceneFilename;
- _prevSceneFilename = nullptr;
+ SAFE_DELETE_ARRAY(_prevSceneFilename);
if (name) {
size_t nameSize = strlen(name) + 1;
_prevSceneFilename = new char[nameSize];
@@ -1594,8 +1576,7 @@ void AdGame::setPrevSceneFilename(const char *name) {
//////////////////////////////////////////////////////////////////////////
bool AdGame::scheduleChangeScene(const char *filename, bool fadeIn) {
- delete[] _scheduledScene;
- _scheduledScene = nullptr;
+ SAFE_DELETE_ARRAY(_scheduledScene);
if (_scene && !_scene->_initialized) {
return changeScene(filename, fadeIn);
@@ -1794,8 +1775,7 @@ bool AdGame::loadItemsBuffer(char *buffer, bool merge) {
}
addItem(item);
} else {
- delete item;
- item = nullptr;
+ SAFE_DELETE(item);
cmd = PARSERR_GENERIC;
}
}
@@ -1866,8 +1846,7 @@ bool AdGame::windowLoadHook(UIWindow *win, char **buffer, char **params) {
case TOKEN_ENTITY_CONTAINER: {
UIEntity *ent = new UIEntity(_gameRef);
if (!ent || DID_FAIL(ent->loadBuffer(*params, false))) {
- delete ent;
- ent = nullptr;
+ SAFE_DELETE(ent);
cmd = PARSERR_GENERIC;
} else {
ent->_parent = win;
@@ -2095,8 +2074,7 @@ bool AdGame::displayContent(bool doUpdate, bool displayAll) {
_theoraPlayer->display();
}
if (_theoraPlayer->isFinished()) {
- delete _theoraPlayer;
- _theoraPlayer = nullptr;
+ SAFE_DELETE(_theoraPlayer);
}
} else {
@@ -2150,8 +2128,7 @@ bool AdGame::displayContent(bool doUpdate, bool displayAll) {
if (_loadingIcon) {
_loadingIcon->display(_loadingIconX, _loadingIconY);
if (!_loadingIconPersistent) {
- delete _loadingIcon;
- _loadingIcon = nullptr;
+ SAFE_DELETE(_loadingIcon);
}
}
diff --git a/engines/wintermute/ad/ad_generic.cpp b/engines/wintermute/ad/ad_generic.cpp
index ecb58e1c46a..9be0c75a184 100644
--- a/engines/wintermute/ad/ad_generic.cpp
+++ b/engines/wintermute/ad/ad_generic.cpp
@@ -28,6 +28,7 @@
#include "engines/wintermute/ad/ad_generic.h"
#include "engines/wintermute/base/base_persistence_manager.h"
#include "engines/wintermute/base/gfx/3dmesh.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -40,8 +41,7 @@ AdGeneric::AdGeneric(BaseGame *inGame) : BaseScriptable(inGame, false, false) {
//////////////////////////////////////////////////////////////////////////
AdGeneric::~AdGeneric() {
- delete _mesh;
- _mesh = nullptr;
+ SAFE_DELETE(_mesh);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/ad/ad_geom_ext.cpp b/engines/wintermute/ad/ad_geom_ext.cpp
index 793401198dd..6ba8337fb3b 100644
--- a/engines/wintermute/ad/ad_geom_ext.cpp
+++ b/engines/wintermute/ad/ad_geom_ext.cpp
@@ -32,6 +32,7 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/base_parser.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -42,8 +43,7 @@ AdGeomExt::AdGeomExt(BaseGame *in_gameRef) : BaseClass(in_gameRef) {
//////////////////////////////////////////////////////////////////////////
AdGeomExt::~AdGeomExt() {
for (int32 i = 0; i < _nodes.getSize(); i++) {
- delete _nodes[i];
- _nodes[i] = nullptr;
+ SAFE_DELETE(_nodes[i]);
}
_nodes.removeAll();
}
@@ -96,10 +96,7 @@ bool AdGeomExt::loadBuffer(char *buffer) {
if (node && node->loadBuffer(params, false)) {
_nodes.add(node);
} else {
- if (node) {
- delete node;
- }
-
+ SAFE_DELETE(node);
cmd = PARSERR_GENERIC;
}
}
diff --git a/engines/wintermute/ad/ad_geom_ext_node.cpp b/engines/wintermute/ad/ad_geom_ext_node.cpp
index 4122eb8e577..acfc4b80b3b 100644
--- a/engines/wintermute/ad/ad_geom_ext_node.cpp
+++ b/engines/wintermute/ad/ad_geom_ext_node.cpp
@@ -31,6 +31,7 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/base_parser.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -43,8 +44,7 @@ AdGeomExtNode::AdGeomExtNode(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
AdGeomExtNode::~AdGeomExtNode() {
- delete[] _namePattern;
- _namePattern = nullptr;
+ SAFE_DELETE_ARRAY(_namePattern);
}
TOKEN_DEF_START
diff --git a/engines/wintermute/ad/ad_inventory_box.cpp b/engines/wintermute/ad/ad_inventory_box.cpp
index 33efdf80baf..6f39638afbb 100644
--- a/engines/wintermute/ad/ad_inventory_box.cpp
+++ b/engines/wintermute/ad/ad_inventory_box.cpp
@@ -38,6 +38,8 @@
#include "engines/wintermute/ui/ui_button.h"
#include "engines/wintermute/ui/ui_window.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
#include "common/rect.h"
@@ -68,8 +70,7 @@ AdInventoryBox::~AdInventoryBox() {
_gameRef->unregisterObject(_window);
_window = nullptr;
- delete _closeButton;
- _closeButton = nullptr;
+ SAFE_DELETE(_closeButton);
}
@@ -251,11 +252,10 @@ bool AdInventoryBox::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_WINDOW:
- delete _window;
+ SAFE_DELETE(_window);
_window = new UIWindow(_gameRef);
if (!_window || DID_FAIL(_window->loadBuffer(params, false))) {
- delete _window;
- _window = nullptr;
+ SAFE_DELETE(_window);
cmd = PARSERR_GENERIC;
} else {
_gameRef->registerObject(_window);
@@ -312,7 +312,7 @@ bool AdInventoryBox::loadBuffer(char *buffer, bool complete) {
}
if (_exclusive) {
- delete _closeButton;
+ SAFE_DELETE(_closeButton);
_closeButton = new UIButton(_gameRef);
if (_closeButton) {
_closeButton->setName("close");
diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index 8e6a93afa70..f2fc57b0afc 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -40,6 +40,8 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -69,15 +71,11 @@ AdItem::AdItem(BaseGame *inGame) : AdTalkHolder(inGame) {
//////////////////////////////////////////////////////////////////////////
AdItem::~AdItem() {
- delete _spriteHover;
- _spriteHover = nullptr;
- delete _cursorNormal;
- _cursorNormal = nullptr;
- delete _cursorHover;
- _cursorHover = nullptr;
+ SAFE_DELETE(_spriteHover);
+ SAFE_DELETE(_cursorNormal);
+ SAFE_DELETE(_cursorHover);
- delete[] _amountString;
- _amountString = nullptr;
+ SAFE_DELETE_ARRAY(_amountString);
}
@@ -198,22 +196,20 @@ bool AdItem::loadBuffer(char *buffer, bool complete) {
case TOKEN_IMAGE:
case TOKEN_SPRITE:
- delete _sprite;
+ SAFE_DELETE(_sprite);
_sprite = new BaseSprite(_gameRef, this);
if (!_sprite || DID_FAIL(_sprite->loadFile(params, ((AdGame *)_gameRef)->_texItemLifeTime))) {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE_HOVER:
case TOKEN_SPRITE_HOVER:
- delete _spriteHover;
+ SAFE_DELETE(_spriteHover);
_spriteHover = new BaseSprite(_gameRef, this);
if (!_spriteHover || DID_FAIL(_spriteHover->loadFile(params, ((AdGame *)_gameRef)->_texItemLifeTime))) {
- delete _spriteHover;
- _spriteHover = nullptr;
+ SAFE_DELETE(_spriteHover);
cmd = PARSERR_GENERIC;
}
break;
@@ -269,21 +265,19 @@ bool AdItem::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursorNormal;
+ SAFE_DELETE(_cursorNormal);
_cursorNormal = new BaseSprite(_gameRef);
if (!_cursorNormal || DID_FAIL(_cursorNormal->loadFile(params, ((AdGame *)_gameRef)->_texItemLifeTime))) {
- delete _cursorNormal;
- _cursorNormal = nullptr;
+ SAFE_DELETE(_cursorNormal);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_CURSOR_HOVER:
- delete _cursorHover;
+ SAFE_DELETE(_cursorHover);
_cursorHover = new BaseSprite(_gameRef);
if (!_cursorHover || DID_FAIL(_cursorHover->loadFile(params, ((AdGame *)_gameRef)->_texItemLifeTime))) {
- delete _cursorHover;
- _cursorHover = nullptr;
+ SAFE_DELETE(_cursorHover);
cmd = PARSERR_GENERIC;
}
break;
@@ -339,8 +333,7 @@ bool AdItem::update() {
_currentSprite = nullptr;
if (_state == STATE_READY && _animSprite) {
- delete _animSprite;
- _animSprite = nullptr;
+ SAFE_DELETE(_animSprite);
}
// finished playing animation?
@@ -472,8 +465,7 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
const char *filename = stack->pop()->getString();
- delete _spriteHover;
- _spriteHover = nullptr;
+ SAFE_DELETE(_spriteHover);
BaseSprite *spr = new BaseSprite(_gameRef, this);
if (!spr || DID_FAIL(spr->loadFile(filename))) {
stack->pushBool(false);
@@ -523,8 +515,7 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
const char *filename = stack->pop()->getString();
- delete _cursorNormal;
- _cursorNormal = nullptr;
+ SAFE_DELETE(_cursorNormal);
BaseSprite *spr = new BaseSprite(_gameRef);
if (!spr || DID_FAIL(spr->loadFile(filename))) {
stack->pushBool(false);
@@ -589,8 +580,7 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
const char *filename = stack->pop()->getString();
- delete _cursorHover;
- _cursorHover = nullptr;
+ SAFE_DELETE(_cursorHover);
BaseSprite *spr = new BaseSprite(_gameRef);
if (!spr || DID_FAIL(spr->loadFile(filename))) {
stack->pushBool(false);
@@ -789,12 +779,10 @@ bool AdItem::scSetProperty(const char *name, ScValue *value) {
// AmountString
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "AmountString") == 0) {
- if (value->isNULL()) {
- delete[] _amountString;
- _amountString = nullptr;
- } else {
+ if (value->isNULL())
+ SAFE_DELETE_ARRAY(_amountString);
+ else
BaseUtils::setString(&_amountString, value->getString());
- }
return STATUS_OK;
}
diff --git a/engines/wintermute/ad/ad_layer.cpp b/engines/wintermute/ad/ad_layer.cpp
index b1f400f9dff..9be3569973d 100644
--- a/engines/wintermute/ad/ad_layer.cpp
+++ b/engines/wintermute/ad/ad_layer.cpp
@@ -37,6 +37,8 @@
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -173,8 +175,8 @@ bool AdLayer::loadBuffer(char *buffer, bool complete) {
AdSceneNode *node = new AdSceneNode(_gameRef);
if (!region || !node || DID_FAIL(region->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete region;
- delete node;
+ SAFE_DELETE(region);
+ SAFE_DELETE(node);
} else {
node->setRegion(region);
_nodes.add(node);
@@ -190,8 +192,8 @@ bool AdLayer::loadBuffer(char *buffer, bool complete) {
}
if (!entity || !node || DID_FAIL(entity->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete entity;
- delete node;
+ SAFE_DELETE(entity);
+ SAFE_DELETE(node);
} else {
node->setEntity(entity);
_nodes.add(node);
@@ -361,8 +363,7 @@ bool AdLayer::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
for (int32 i = 0; i < _nodes.getSize(); i++) {
if (_nodes[i] == toDelete) {
- delete _nodes[i];
- _nodes[i] = nullptr;
+ SAFE_DELETE(_nodes[i]);
_nodes.removeAt(i);
break;
}
diff --git a/engines/wintermute/ad/ad_node_state.cpp b/engines/wintermute/ad/ad_node_state.cpp
index a81a0cb5f95..ee47e50efe2 100644
--- a/engines/wintermute/ad/ad_node_state.cpp
+++ b/engines/wintermute/ad/ad_node_state.cpp
@@ -31,6 +31,7 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
#include "common/str.h"
@@ -54,39 +55,32 @@ AdNodeState::AdNodeState(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
AdNodeState::~AdNodeState() {
- delete[] _name;
- _name = nullptr;
- delete[] _filename;
- _filename = nullptr;
- delete[] _cursor;
- _cursor = nullptr;
+ SAFE_DELETE_ARRAY(_name);
+ SAFE_DELETE_ARRAY(_filename);
+ SAFE_DELETE_ARRAY(_cursor);
for (int i = 0; i < 7; i++) {
- delete[] _caption[i];
- _caption[i] = nullptr;
+ SAFE_DELETE_ARRAY(_caption[i]);
}
}
//////////////////////////////////////////////////////////////////////////
void AdNodeState::setName(const char *name) {
- delete[] _name;
- _name = nullptr;
+ SAFE_DELETE_ARRAY(_name);
BaseUtils::setString(&_name, name);
}
//////////////////////////////////////////////////////////////////////////
void AdNodeState::setFilename(const char *filename) {
- delete[] _filename;
- _filename = nullptr;
+ SAFE_DELETE_ARRAY(_filename);
BaseUtils::setString(&_filename, filename);
}
//////////////////////////////////////////////////////////////////////////
void AdNodeState::setCursor(const char *filename) {
- delete[] _cursor;
- _cursor = nullptr;
+ SAFE_DELETE_ARRAY(_cursor);
BaseUtils::setString(&_cursor, filename);
}
@@ -115,7 +109,7 @@ void AdNodeState::setCaption(const char *caption, int caseVal) {
if (caseVal < 1 || caseVal > 7)
return;
- delete[] _caption[caseVal - 1];
+ SAFE_DELETE_ARRAY(_caption[caseVal - 1]);
size_t captionSize = strlen(caption) + 1;
_caption[caseVal - 1] = new char[captionSize];
Common::strcpy_s(_caption[caseVal - 1], captionSize, caption);
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index 71a79c75693..0ec7c26c1c6 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -48,6 +48,7 @@
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/sound/base_sound.h"
+#include "engines/wintermute/dcgf.h"
#include "common/str.h"
#include "common/util.h"
@@ -109,22 +110,15 @@ AdObject::AdObject(BaseGame *inGame) : BaseObject(inGame) {
//////////////////////////////////////////////////////////////////////////
AdObject::~AdObject() {
_currentSprite = nullptr; // reference only, don't delete
- delete _animSprite;
- _animSprite = nullptr;
- delete _sentence;
- _sentence = nullptr;
- delete[] _forcedTalkAnimName;
- _forcedTalkAnimName = nullptr;
+ SAFE_DELETE(_animSprite);
+ SAFE_DELETE(_sentence);
+ SAFE_DELETE_ARRAY(_forcedTalkAnimName);
- delete _blockRegion;
- _blockRegion = nullptr;
- delete _wptGroup;
- _wptGroup = nullptr;
+ SAFE_DELETE(_blockRegion);
+ SAFE_DELETE(_wptGroup);
- delete _currentBlockRegion;
- _currentBlockRegion = nullptr;
- delete _currentWptGroup;
- _currentWptGroup = nullptr;
+ SAFE_DELETE(_currentBlockRegion);
+ SAFE_DELETE(_currentWptGroup);
_tempSprite2 = nullptr; // reference only
_stickRegion = nullptr;
@@ -157,7 +151,7 @@ AdObject::~AdObject() {
//////////////////////////////////////////////////////////////////////////
bool AdObject::playAnim(const char *filename) {
- delete _animSprite;
+ SAFE_DELETE(_animSprite);
_animSprite = new BaseSprite(_gameRef, this);
if (!_animSprite) {
_gameRef->LOG(0, "AdObject::PlayAnim: error creating temp sprite (object:\"%s\" sprite:\"%s\")", _name, filename);
@@ -252,7 +246,7 @@ bool AdObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
else if (strcmp(name, "ForceTalkAnim") == 0) {
stack->correctParams(1);
const char *animName = stack->pop()->getString();
- delete[] _forcedTalkAnimName;
+ SAFE_DELETE_ARRAY(_forcedTalkAnimName);
size_t animNameSize = strlen(animName) + 1;
_forcedTalkAnimName = new char[animNameSize];
Common::strcpy_s(_forcedTalkAnimName, animNameSize, animName);
@@ -886,13 +880,11 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const
}
if (_forcedTalkAnimName && _forcedTalkAnimUsed) {
- delete[] _forcedTalkAnimName;
- _forcedTalkAnimName = nullptr;
+ SAFE_DELETE_ARRAY(_forcedTalkAnimName);
_forcedTalkAnimUsed = false;
}
- delete(_sentence->_sound);
- _sentence->_sound = nullptr;
+ SAFE_DELETE(_sentence->_sound);
_sentence->setText(text);
_gameRef->expandStringByStringTable(&_sentence->_text);
@@ -1007,8 +999,7 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const
//////////////////////////////////////////////////////////////////////////
bool AdObject::reset() {
if (_state == STATE_PLAYING_ANIM && _animSprite != nullptr) {
- delete _animSprite;
- _animSprite = nullptr;
+ SAFE_DELETE(_animSprite);
} else if (_state == STATE_TALKING && _sentence) {
_sentence->finish();
}
diff --git a/engines/wintermute/ad/ad_object_3d.cpp b/engines/wintermute/ad/ad_object_3d.cpp
index 509d05e58e1..37dd8f7999b 100644
--- a/engines/wintermute/ad/ad_object_3d.cpp
+++ b/engines/wintermute/ad/ad_object_3d.cpp
@@ -65,8 +65,7 @@ AdObject3D::AdObject3D(BaseGame *inGame) : AdObject(inGame) {
//////////////////////////////////////////////////////////////////////////
AdObject3D::~AdObject3D() {
_tempSkelAnim = nullptr; // ref only
- delete _shadowVolume;
- _shadowVolume = nullptr;
+ SAFE_DELETE(_shadowVolume);
clearIgnoredLights();
}
diff --git a/engines/wintermute/ad/ad_response.cpp b/engines/wintermute/ad/ad_response.cpp
index 09cbd8b9c76..54a333aff70 100644
--- a/engines/wintermute/ad/ad_response.cpp
+++ b/engines/wintermute/ad/ad_response.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/base/font/base_font_storage.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -48,16 +49,11 @@ AdResponse::AdResponse(BaseGame *inGame) : BaseObject(inGame) {
//////////////////////////////////////////////////////////////////////////
AdResponse::~AdResponse() {
- delete[] _text;
- _text = nullptr;
- delete[] _textOrig;
- _textOrig = nullptr;
- delete _icon;
- _icon = nullptr;
- delete _iconHover;
- _iconHover = nullptr;
- delete _iconPressed;
- _iconPressed = nullptr;
+ SAFE_DELETE_ARRAY(_text);
+ SAFE_DELETE_ARRAY(_textOrig);
+ SAFE_DELETE(_icon);
+ SAFE_DELETE(_iconHover);
+ SAFE_DELETE(_iconPressed);
if (_font) {
_gameRef->_fontStorage->removeFont(_font);
}
@@ -77,8 +73,7 @@ bool AdResponse::setIcon(const char *filename) {
_icon = new BaseSprite(_gameRef);
if (!_icon || DID_FAIL(_icon->loadFile(filename))) {
_gameRef->LOG(0, "AdResponse::setIcon failed for file '%s'", filename);
- delete _icon;
- _icon = nullptr;
+ SAFE_DELETE(_icon);
return STATUS_FAILED;
}
return STATUS_OK;
@@ -99,12 +94,11 @@ bool AdResponse::setFont(const char *filename) {
//////////////////////////////////////////////////////////////////////////
bool AdResponse::setIconHover(const char *filename) {
- delete _iconHover;
+ SAFE_DELETE(_iconHover);
_iconHover = new BaseSprite(_gameRef);
if (!_iconHover || DID_FAIL(_iconHover->loadFile(filename))) {
_gameRef->LOG(0, "AdResponse::setIconHover failed for file '%s'", filename);
- delete _iconHover;
- _iconHover = nullptr;
+ SAFE_DELETE(_iconHover);
return STATUS_FAILED;
}
return STATUS_OK;
@@ -113,12 +107,11 @@ bool AdResponse::setIconHover(const char *filename) {
//////////////////////////////////////////////////////////////////////////
bool AdResponse::setIconPressed(const char *filename) {
- delete _iconPressed;
+ SAFE_DELETE(_iconPressed);
_iconPressed = new BaseSprite(_gameRef);
if (!_iconPressed || DID_FAIL(_iconPressed->loadFile(filename))) {
_gameRef->LOG(0, "AdResponse::setIconPressed failed for file '%s'", filename);
- delete _iconPressed;
- _iconPressed = nullptr;
+ SAFE_DELETE(_iconPressed);
return STATUS_FAILED;
}
return STATUS_OK;
diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp
index 9c103203252..720d09472ef 100644
--- a/engines/wintermute/ad/ad_response_box.cpp
+++ b/engines/wintermute/ad/ad_response_box.cpp
@@ -44,6 +44,8 @@
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -73,15 +75,10 @@ AdResponseBox::AdResponseBox(BaseGame *inGame) : BaseObject(inGame) {
//////////////////////////////////////////////////////////////////////////
AdResponseBox::~AdResponseBox() {
-
- delete _window;
- _window = nullptr;
- delete _shieldWindow;
- _shieldWindow = nullptr;
- delete[] _lastResponseText;
- _lastResponseText = nullptr;
- delete[] _lastResponseTextOrig;
- _lastResponseTextOrig = nullptr;
+ SAFE_DELETE(_window);
+ SAFE_DELETE(_shieldWindow);
+ SAFE_DELETE_ARRAY(_lastResponseText);
+ SAFE_DELETE_ARRAY(_lastResponseTextOrig);
if (_font) {
_gameRef->_fontStorage->removeFont(_font);
@@ -280,11 +277,10 @@ bool AdResponseBox::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_WINDOW:
- delete _window;
+ SAFE_DELETE(_window);
_window = new UIWindow(_gameRef);
if (!_window || DID_FAIL(_window->loadBuffer(params, false))) {
- delete _window;
- _window = nullptr;
+ SAFE_DELETE(_window);
cmd = PARSERR_GENERIC;
} else if (_shieldWindow) {
_shieldWindow->_parent = _window;
@@ -348,11 +344,10 @@ bool AdResponseBox::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
diff --git a/engines/wintermute/ad/ad_response_context.cpp b/engines/wintermute/ad/ad_response_context.cpp
index 40f0f155173..d2bef0ff969 100644
--- a/engines/wintermute/ad/ad_response_context.cpp
+++ b/engines/wintermute/ad/ad_response_context.cpp
@@ -27,6 +27,7 @@
#include "engines/wintermute/ad/ad_response_context.h"
#include "engines/wintermute/base/base_persistence_manager.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -41,8 +42,7 @@ AdResponseContext::AdResponseContext(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
AdResponseContext::~AdResponseContext() {
- delete[] _context;
- _context = nullptr;
+ SAFE_DELETE_ARRAY(_context);
}
@@ -57,8 +57,7 @@ bool AdResponseContext::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
void AdResponseContext::setContext(const char *context) {
- delete[] _context;
- _context = nullptr;
+ SAFE_DELETE_ARRAY(_context);
if (context) {
size_t contextSize = strlen(context) + 1;
_context = new char [contextSize];
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 869ccb1a39b..6098314b3f4 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -59,6 +59,7 @@
#include "engines/wintermute/ui/ui_window.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
#ifdef ENABLE_WME3D
#include "engines/wintermute/ad/ad_actor_3dx.h"
@@ -83,8 +84,7 @@ AdScene::AdScene(BaseGame *inGame) : BaseObject(inGame) {
AdScene::~AdScene() {
cleanup();
_gameRef->unregisterObject(_fader);
- delete _pfTarget;
- _pfTarget = nullptr;
+ SAFE_DELETE(_pfTarget);
}
@@ -179,8 +179,7 @@ void AdScene::cleanup() {
_mainLayer = nullptr; // reference only
- delete _shieldWindow;
- _shieldWindow = nullptr;
+ SAFE_DELETE(_shieldWindow);
_gameRef->unregisterObject(_fader);
_fader = nullptr;
@@ -219,11 +218,9 @@ void AdScene::cleanup() {
_objects.removeAll();
#ifdef ENABLE_WME3D
- delete _geom;
- _geom = nullptr;
+ SAFE_DELETE(_geom);
#endif
- delete _viewport;
- _viewport = nullptr;
+ SAFE_DELETE(_viewport);
setDefaults();
}
@@ -751,7 +748,7 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
AdLayer *layer = new AdLayer(_gameRef);
if (!layer || DID_FAIL(layer->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete layer;
+ SAFE_DELETE(layer);
} else {
_gameRef->registerObject(layer);
_layers.add(layer);
@@ -768,7 +765,7 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
AdWaypointGroup *wpt = new AdWaypointGroup(_gameRef);
if (!wpt || DID_FAIL(wpt->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete wpt;
+ SAFE_DELETE(wpt);
} else {
_gameRef->registerObject(wpt);
_waypointGroups.add(wpt);
@@ -780,7 +777,7 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
AdScaleLevel *sl = new AdScaleLevel(_gameRef);
if (!sl || DID_FAIL(sl->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete sl;
+ SAFE_DELETE(sl);
} else {
_gameRef->registerObject(sl);
_scaleLevels.add(sl);
@@ -792,7 +789,7 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
AdRotLevel *rl = new AdRotLevel(_gameRef);
if (!rl || DID_FAIL(rl->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete rl;
+ SAFE_DELETE(rl);
} else {
_gameRef->registerObject(rl);
_rotLevels.add(rl);
@@ -804,7 +801,7 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
AdEntity *entity = new AdEntity(_gameRef);
if (!entity || DID_FAIL(entity->loadBuffer(params, false))) {
cmd = PARSERR_GENERIC;
- delete entity;
+ SAFE_DELETE(entity);
} else {
addObject(entity);
}
@@ -812,25 +809,23 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
#ifdef ENABLE_WME3D
case TOKEN_GEOMETRY:
- delete _geom;
- _geom = nullptr;
+ SAFE_DELETE(_geom);
if (!_gameRef->_useD3D) {
break;
}
_geom = new AdSceneGeometry(_gameRef);
- if (_geom == nullptr || !_geom->loadFile(params)) {
- delete _geom;
- _geom = nullptr;
+ if (!_geom || !_geom->loadFile(params)) {
+ SAFE_DELETE(_geom);
cmd = PARSERR_GENERIC;
}
break;
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index 787c2f06797..272802a4e96 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -53,6 +53,7 @@
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/system/sys_class_registry.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -89,8 +90,7 @@ AdSceneGeometry::AdSceneGeometry(BaseGame *gameRef) : BaseObject(gameRef) {
//////////////////////////////////////////////////////////////////////////
AdSceneGeometry::~AdSceneGeometry() {
cleanup();
- delete _wptMarker;
- _wptMarker = nullptr;
+ SAFE_DELETE(_wptMarker);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/ad/ad_scene_state.cpp b/engines/wintermute/ad/ad_scene_state.cpp
index 834f7be72e8..c11ea8a323d 100644
--- a/engines/wintermute/ad/ad_scene_state.cpp
+++ b/engines/wintermute/ad/ad_scene_state.cpp
@@ -29,6 +29,8 @@
#include "engines/wintermute/ad/ad_node_state.h"
#include "engines/wintermute/persistent.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -43,8 +45,7 @@ AdSceneState::AdSceneState(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
AdSceneState::~AdSceneState() {
- delete[] _filename;
- _filename = nullptr;
+ SAFE_DELETE_ARRAY(_filename);
for (int32 i = 0; i < _nodeStates.getSize(); i++) {
delete _nodeStates[i];
@@ -64,7 +65,7 @@ bool AdSceneState::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
void AdSceneState::setFilename(const char *filename) {
- delete[] _filename;
+ SAFE_DELETE_ARRAY(_filename);
size_t filenameSize = strlen(filename) + 1;
_filename = new char [filenameSize];
Common::strcpy_s(_filename, filenameSize, filename);
diff --git a/engines/wintermute/ad/ad_sentence.cpp b/engines/wintermute/ad/ad_sentence.cpp
index dcd926d19ae..7bf1a5d1d1c 100644
--- a/engines/wintermute/ad/ad_sentence.cpp
+++ b/engines/wintermute/ad/ad_sentence.cpp
@@ -37,6 +37,7 @@
#include "engines/wintermute/base/font/base_font.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/sound/base_sound.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -72,16 +73,11 @@ AdSentence::AdSentence(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
AdSentence::~AdSentence() {
- delete _sound;
- _sound = nullptr;
- delete[] _text;
- _text = nullptr;
- delete[] _stances;
- _stances = nullptr;
- delete[] _tempStance;
- _tempStance = nullptr;
- delete _talkDef;
- _talkDef = nullptr;
+ SAFE_DELETE(_sound);
+ SAFE_DELETE_ARRAY(_text);
+ SAFE_DELETE_ARRAY(_stances);
+ SAFE_DELETE_ARRAY(_tempStance);
+ SAFE_DELETE(_talkDef);
_currentSprite = nullptr; // ref only
_currentSkelAnim = nullptr;
@@ -223,7 +219,7 @@ void AdSentence::setSound(BaseSound *sound) {
if (!sound) {
return;
}
- delete _sound;
+ SAFE_DELETE(_sound);
_sound = sound;
_soundStarted = false;
}
@@ -267,8 +263,7 @@ bool AdSentence::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
bool AdSentence::setupTalkFile(const char *soundFilename) {
- delete _talkDef;
- _talkDef = nullptr;
+ SAFE_DELETE(_talkDef);
_currentSprite = nullptr;
if (!soundFilename) {
@@ -287,8 +282,7 @@ bool AdSentence::setupTalkFile(const char *soundFilename) {
_talkDef = new AdTalkDef(_gameRef);
if (!_talkDef || DID_FAIL(_talkDef->loadFile(talkDefFileName.c_str()))) {
- delete _talkDef;
- _talkDef = nullptr;
+ SAFE_DELETE(_talkDef);
return STATUS_FAILED;
}
//_gameRef->LOG(0, "Using .talk file: %s", TalkDefFile);
diff --git a/engines/wintermute/ad/ad_sprite_set.cpp b/engines/wintermute/ad/ad_sprite_set.cpp
index e6d42d90a71..d3de893a6d7 100644
--- a/engines/wintermute/ad/ad_sprite_set.cpp
+++ b/engines/wintermute/ad/ad_sprite_set.cpp
@@ -31,6 +31,7 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/base_parser.h"
#include "engines/wintermute/base/base_sprite.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -49,8 +50,7 @@ AdSpriteSet::AdSpriteSet(BaseGame *inGame, BaseObject *owner) : BaseObject(inGam
//////////////////////////////////////////////////////////////////////////
AdSpriteSet::~AdSpriteSet() {
for (int i = 0; i < NUM_DIRECTIONS; i++) {
- delete _sprites[i];
- _sprites[i] = nullptr;
+ SAFE_DELETE(_sprites[i]);
}
_owner = nullptr;
@@ -134,8 +134,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_LEFT:
- delete _sprites[DI_LEFT];
- _sprites[DI_LEFT] = nullptr;
+ SAFE_DELETE(_sprites[DI_LEFT]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -145,8 +144,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_RIGHT:
- delete _sprites[DI_RIGHT];
- _sprites[DI_RIGHT] = nullptr;
+ SAFE_DELETE(_sprites[DI_RIGHT]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -156,8 +154,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_UP:
- delete _sprites[DI_UP];
- _sprites[DI_UP] = nullptr;
+ SAFE_DELETE(_sprites[DI_UP]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -167,8 +164,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_DOWN:
- delete _sprites[DI_DOWN];
- _sprites[DI_DOWN] = nullptr;
+ SAFE_DELETE(_sprites[DI_DOWN]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -178,8 +174,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_UP_LEFT:
- delete _sprites[DI_UPLEFT];
- _sprites[DI_UPLEFT] = nullptr;
+ SAFE_DELETE(_sprites[DI_UPLEFT]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -189,8 +184,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_UP_RIGHT:
- delete _sprites[DI_UPRIGHT];
- _sprites[DI_UPRIGHT] = nullptr;
+ SAFE_DELETE(_sprites[DI_UPRIGHT]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -200,8 +194,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_DOWN_LEFT:
- delete _sprites[DI_DOWNLEFT];
- _sprites[DI_DOWNLEFT] = nullptr;
+ SAFE_DELETE(_sprites[DI_DOWNLEFT]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
@@ -211,8 +204,7 @@ bool AdSpriteSet::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteC
break;
case TOKEN_DOWN_RIGHT:
- delete _sprites[DI_DOWNRIGHT];
- _sprites[DI_DOWNRIGHT] = nullptr;
+ SAFE_DELETE(_sprites[DI_DOWNRIGHT]);
spr = new BaseSprite(_gameRef, _owner);
if (!spr || DID_FAIL(spr->loadFile(params, lifeTime, cacheType))) {
cmd = PARSERR_GENERIC;
diff --git a/engines/wintermute/ad/ad_talk_def.cpp b/engines/wintermute/ad/ad_talk_def.cpp
index 772f09994c9..e5f51cef587 100644
--- a/engines/wintermute/ad/ad_talk_def.cpp
+++ b/engines/wintermute/ad/ad_talk_def.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -56,15 +57,11 @@ AdTalkDef::~AdTalkDef() {
}
_nodes.removeAll();
- delete[] _defaultSpriteFilename;
- _defaultSpriteFilename = nullptr;
- delete _defaultSprite;
- _defaultSprite = nullptr;
+ SAFE_DELETE_ARRAY(_defaultSpriteFilename);
+ SAFE_DELETE(_defaultSprite);
- delete[] _defaultSpriteSetFilename;
- _defaultSpriteSetFilename = nullptr;
- delete _defaultSpriteSet;
- _defaultSpriteSet = nullptr;
+ SAFE_DELETE_ARRAY(_defaultSpriteSetFilename);
+ SAFE_DELETE(_defaultSpriteSet);
}
@@ -136,7 +133,7 @@ bool AdTalkDef::loadBuffer(char *buffer, bool complete) {
if (node && DID_SUCCEED(node->loadBuffer(params, false))) {
_nodes.add(node);
} else {
- delete node;
+ SAFE_DELETE(node);
cmd = PARSERR_GENERIC;
}
}
@@ -151,11 +148,10 @@ bool AdTalkDef::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_DEFAULT_SPRITESET: {
- delete _defaultSpriteSet;
+ SAFE_DELETE(_defaultSpriteSet);
_defaultSpriteSet = new AdSpriteSet(_gameRef);
if (!_defaultSpriteSet || DID_FAIL(_defaultSpriteSet->loadBuffer(params, false))) {
- delete _defaultSpriteSet;
- _defaultSpriteSet = nullptr;
+ SAFE_DELETE(_defaultSpriteSet);
cmd = PARSERR_GENERIC;
}
}
@@ -180,10 +176,8 @@ bool AdTalkDef::loadBuffer(char *buffer, bool complete) {
return STATUS_FAILED;
}
- delete _defaultSprite;
- _defaultSprite = nullptr;
- delete _defaultSpriteSet;
- _defaultSpriteSet = nullptr;
+ SAFE_DELETE(_defaultSprite);
+ SAFE_DELETE(_defaultSpriteSet);
if (_defaultSpriteFilename) {
_defaultSprite = new BaseSprite(_gameRef);
@@ -250,8 +244,7 @@ bool AdTalkDef::loadDefaultSprite() {
if (_defaultSpriteFilename && !_defaultSprite) {
_defaultSprite = new BaseSprite(_gameRef);
if (!_defaultSprite || DID_FAIL(_defaultSprite->loadFile(_defaultSpriteFilename))) {
- delete _defaultSprite;
- _defaultSprite = nullptr;
+ SAFE_DELETE(_defaultSprite);
return STATUS_FAILED;
} else {
return STATUS_OK;
@@ -259,8 +252,7 @@ bool AdTalkDef::loadDefaultSprite() {
} else if (_defaultSpriteSetFilename && !_defaultSpriteSet) {
_defaultSpriteSet = new AdSpriteSet(_gameRef);
if (!_defaultSpriteSet || DID_FAIL(_defaultSpriteSet->loadFile(_defaultSpriteSetFilename))) {
- delete _defaultSpriteSet;
- _defaultSpriteSet = nullptr;
+ SAFE_DELETE(_defaultSpriteSet);
return STATUS_FAILED;
} else {
return STATUS_OK;
diff --git a/engines/wintermute/ad/ad_talk_holder.cpp b/engines/wintermute/ad/ad_talk_holder.cpp
index 20aaa8d7c88..c49da94ae62 100644
--- a/engines/wintermute/ad/ad_talk_holder.cpp
+++ b/engines/wintermute/ad/ad_talk_holder.cpp
@@ -35,6 +35,8 @@
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/scriptables/script_ext_array.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -49,8 +51,7 @@ AdTalkHolder::AdTalkHolder(BaseGame *inGame) : AdObject(inGame) {
//////////////////////////////////////////////////////////////////////////
AdTalkHolder::~AdTalkHolder() {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
for (int32 i = 0; i < _talkSprites.getSize(); i++) {
delete _talkSprites[i];
@@ -71,14 +72,13 @@ BaseSprite *AdTalkHolder::getTalkStance(const char *stance) {
// forced stance?
if (_forcedTalkAnimName && !_forcedTalkAnimUsed) {
_forcedTalkAnimUsed = true;
- delete _animSprite;
+ SAFE_DELETE(_animSprite);
_animSprite = new BaseSprite(_gameRef, this);
if (_animSprite) {
bool res = _animSprite->loadFile(_forcedTalkAnimName);
if (DID_FAIL(res)) {
_gameRef->LOG(res, "AdTalkHolder::GetTalkStance: error loading talk sprite (object:\"%s\" sprite:\"%s\")", _name, _forcedTalkAnimName);
- delete _animSprite;
- _animSprite = nullptr;
+ SAFE_DELETE(_animSprite);
} else {
return _animSprite;
}
@@ -137,8 +137,7 @@ bool AdTalkHolder::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS
setCurrent = true;
}
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
if (val->isNULL()) {
_sprite = nullptr;
diff --git a/engines/wintermute/ad/ad_talk_node.cpp b/engines/wintermute/ad/ad_talk_node.cpp
index 5d07ebfe6e5..d47b0709d72 100644
--- a/engines/wintermute/ad/ad_talk_node.cpp
+++ b/engines/wintermute/ad/ad_talk_node.cpp
@@ -32,6 +32,8 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
+
namespace Wintermute {
IMPLEMENT_PERSISTENT(AdTalkNode, false)
@@ -52,16 +54,11 @@ AdTalkNode::AdTalkNode(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
AdTalkNode::~AdTalkNode() {
- delete[] _spriteFilename;
- _spriteFilename = nullptr;
- delete _sprite;
- _sprite = nullptr;
- delete[] _spriteSetFilename;
- _spriteSetFilename = nullptr;
- delete _spriteSet;
- _spriteSet = nullptr;
- delete _comment;
- _comment = nullptr;
+ SAFE_DELETE_ARRAY(_spriteFilename);
+ SAFE_DELETE(_sprite);
+ SAFE_DELETE_ARRAY(_spriteSetFilename);
+ SAFE_DELETE(_spriteSet);
+ SAFE_DELETE_ARRAY(_comment);
}
TOKEN_DEF_START
@@ -119,8 +116,7 @@ bool AdTalkNode::loadBuffer(char *buffer, bool complete) {
delete _spriteSet;
_spriteSet = new AdSpriteSet(_gameRef);
if (!_spriteSet || DID_FAIL(_spriteSet->loadBuffer(params, false))) {
- delete _spriteSet;
- _spriteSet = nullptr;
+ SAFE_DELETE(_spriteSet);
cmd = PARSERR_GENERIC;
}
}
@@ -169,7 +165,7 @@ bool AdTalkNode::loadBuffer(char *buffer, bool complete) {
}
if (_preCache && _spriteFilename) {
- delete _sprite;
+ SAFE_DELETE(_sprite);
_sprite = new BaseSprite(_gameRef);
if (!_sprite || DID_FAIL(_sprite->loadFile(_spriteFilename))) {
return STATUS_FAILED;
@@ -177,7 +173,7 @@ bool AdTalkNode::loadBuffer(char *buffer, bool complete) {
}
if (_preCache && _spriteSetFilename) {
- delete _spriteSet;
+ SAFE_DELETE(_spriteSet);
_spriteSet = new AdSpriteSet(_gameRef);
if (!_spriteSet || DID_FAIL(_spriteSet->loadFile(_spriteSetFilename))) {
return STATUS_FAILED;
@@ -244,8 +240,7 @@ bool AdTalkNode::loadSprite() {
if (_spriteFilename && !_sprite) {
_sprite = new BaseSprite(_gameRef);
if (!_sprite || DID_FAIL(_sprite->loadFile(_spriteFilename))) {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
return STATUS_FAILED;
} else {
return STATUS_OK;
@@ -253,8 +248,7 @@ bool AdTalkNode::loadSprite() {
} else if (_spriteSetFilename && !_spriteSet) {
_spriteSet = new AdSpriteSet(_gameRef);
if (!_spriteSet || DID_FAIL(_spriteSet->loadFile(_spriteSetFilename))) {
- delete _spriteSet;
- _spriteSet = nullptr;
+ SAFE_DELETE(_spriteSet);
return STATUS_FAILED;
} else {
return STATUS_OK;
diff --git a/engines/wintermute/ad/ad_walkplane.cpp b/engines/wintermute/ad/ad_walkplane.cpp
index 41a8c8abfcb..0a61eb5094c 100644
--- a/engines/wintermute/ad/ad_walkplane.cpp
+++ b/engines/wintermute/ad/ad_walkplane.cpp
@@ -28,6 +28,7 @@
#include "engines/wintermute/ad/ad_walkplane.h"
#include "engines/wintermute/base/base_persistence_manager.h"
#include "engines/wintermute/base/gfx/3dmesh.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -40,8 +41,7 @@ AdWalkplane::AdWalkplane(BaseGame *inGame) : BaseScriptable(inGame, false, false
//////////////////////////////////////////////////////////////////////////
AdWalkplane::~AdWalkplane() {
- delete _mesh;
- _mesh = nullptr;
+ SAFE_DELETE(_mesh);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/base/base.cpp b/engines/wintermute/base/base.cpp
index df51d2789d9..f011f8ddc09 100644
--- a/engines/wintermute/base/base.cpp
+++ b/engines/wintermute/base/base.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/base_engine.h"
#include "engines/wintermute/base/base_parser.h"
#include "engines/wintermute/base/base_dynamic_buffer.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -117,14 +118,14 @@ bool BaseClass::parseEditorProperty(char *buffer, bool complete) {
while ((cmd = parser.getCommand(&buffer, commands, ¶ms)) > 0) {
switch (cmd) {
case TOKEN_NAME: {
- delete[] propName;
+ SAFE_DELETE_ARRAY(propName);
size_t propNameSize = strlen(params) + 1;
propName = new char[propNameSize];
Common::strcpy_s(propName, propNameSize, params);
break;
}
case TOKEN_VALUE: {
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propValue);
size_t propValueSize = strlen(params) + 1;
propValue = new char[propValueSize];
Common::strcpy_s(propValue, propValueSize, params);
@@ -136,14 +137,14 @@ bool BaseClass::parseEditorProperty(char *buffer, bool complete) {
}
if (cmd == PARSERR_TOKENNOTFOUND) {
- delete[] propName;
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propName);
+ SAFE_DELETE_ARRAY(propValue);
BaseEngine::LOG(0, "Syntax error in EDITOR_PROPERTY definition");
return STATUS_FAILED;
}
if (cmd == PARSERR_GENERIC || propName == nullptr || propValue == nullptr) {
- delete[] propName;
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propName);
+ SAFE_DELETE_ARRAY(propValue);
BaseEngine::LOG(0, "Error loading EDITOR_PROPERTY definition");
return STATUS_FAILED;
}
@@ -151,8 +152,8 @@ bool BaseClass::parseEditorProperty(char *buffer, bool complete) {
setEditorProp(propName, propValue);
- delete[] propName;
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propName);
+ SAFE_DELETE_ARRAY(propValue);
return STATUS_OK;
}
diff --git a/engines/wintermute/base/base_file_manager.cpp b/engines/wintermute/base/base_file_manager.cpp
index 4f6aea7dc03..67567eba738 100644
--- a/engines/wintermute/base/base_file_manager.cpp
+++ b/engines/wintermute/base/base_file_manager.cpp
@@ -34,6 +34,8 @@
#include "engines/wintermute/base/base.h"
#include "engines/wintermute/base/base_engine.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/algorithm.h"
#include "common/debug.h"
#include "common/str.h"
@@ -85,8 +87,7 @@ bool BaseFileManager::cleanup() {
_packages.clear();
// get rid of the resources:
- delete _resources;
- _resources = NULL;
+ SAFE_DELETE(_resources);
return STATUS_OK;
}
diff --git a/engines/wintermute/base/base_frame.cpp b/engines/wintermute/base/base_frame.cpp
index 758364614d5..7b11000eefe 100644
--- a/engines/wintermute/base/base_frame.cpp
+++ b/engines/wintermute/base/base_frame.cpp
@@ -38,6 +38,8 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -59,8 +61,7 @@ BaseFrame::BaseFrame(BaseGame *inGame) : BaseScriptable(inGame, true) {
//////////////////////////////////////////////////////////////////////
BaseFrame::~BaseFrame() {
- delete _sound;
- _sound = nullptr;
+ SAFE_DELETE(_sound);
for (int32 i = 0; i < _subframes.getSize(); i++) {
delete _subframes[i];
@@ -68,8 +69,7 @@ BaseFrame::~BaseFrame() {
_subframes.removeAll();
for (int32 i = 0; i < _applyEvent.getSize(); i++) {
- delete[] _applyEvent[i];
- _applyEvent[i] = nullptr;
+ SAFE_DELETE_ARRAY(_applyEvent[i]);
}
_applyEvent.removeAll();
}
@@ -258,16 +258,14 @@ bool BaseFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
case TOKEN_SOUND: {
if (_sound) {
- delete _sound;
- _sound = nullptr;
+ SAFE_DELETE(_sound);
}
_sound = new BaseSound(_gameRef);
if (!_sound || DID_FAIL(_sound->setSound(params, Audio::Mixer::kSFXSoundType, false))) {
if (BaseEngine::instance().getSoundMgr()->_soundAvailable) {
BaseEngine::LOG(0, "Error loading sound '%s'.", params);
}
- delete _sound;
- _sound = nullptr;
+ SAFE_DELETE(_sound);
}
}
break;
@@ -454,15 +452,13 @@ bool BaseFrame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStac
if (strcmp(name, "SetSound") == 0) {
stack->correctParams(1);
ScValue *val = stack->pop();
- delete _sound;
- _sound = nullptr;
+ SAFE_DELETE(_sound);
if (!val->isNULL()) {
_sound = new BaseSound(_gameRef);
if (!_sound || DID_FAIL(_sound->setSound(val->getString(), Audio::Mixer::kSFXSoundType, false))) {
stack->pushBool(false);
- delete _sound;
- _sound = nullptr;
+ SAFE_DELETE(_sound);
} else {
stack->pushBool(true);
}
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 517da26d01c..70b09837e82 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -277,40 +277,25 @@ BaseGame::~BaseGame() {
cleanup();
- delete _mathClass;
- delete _directoryClass;
-
- delete _transMgr;
- delete _scEngine;
- delete _fontStorage;
- delete _surfaceStorage;
- delete _videoPlayer;
- delete _theoraPlayer;
- delete _soundMgr;
-
- delete _renderer;
- delete _musicSystem;
- delete _settings;
-
- _mathClass = nullptr;
- _directoryClass = nullptr;
-
- _transMgr = nullptr;
- _scEngine = nullptr;
- _fontStorage = nullptr;
- _surfaceStorage = nullptr;
- _videoPlayer = nullptr;
- _theoraPlayer = nullptr;
- _soundMgr = nullptr;
+ SAFE_DELETE(_mathClass);
+ SAFE_DELETE(_directoryClass);
+
+ SAFE_DELETE(_transMgr);
+ SAFE_DELETE(_scEngine);
+ SAFE_DELETE(_fontStorage);
+ SAFE_DELETE(_surfaceStorage);
+ SAFE_DELETE(_videoPlayer);
+ SAFE_DELETE(_theoraPlayer);
+ SAFE_DELETE(_soundMgr);
//SAFE_DELETE(_keyboardState);
- _renderer = nullptr;
- _musicSystem = nullptr;
- _settings = nullptr;
+ SAFE_DELETE(_renderer);
+ //SAFE_DELETE(m_AccessMgr);
+ SAFE_DELETE(_musicSystem);
+ SAFE_DELETE(_settings);
#ifdef ENABLE_HEROCRAFT
- delete _rndHc;
- _rndHc = nullptr;
+ SAFE_DELETE(_rndHc);
#endif
DEBUG_DebugDisable();
@@ -320,8 +305,7 @@ BaseGame::~BaseGame() {
//////////////////////////////////////////////////////////////////////////
bool BaseGame::cleanup() {
- delete _loadingIcon;
- _loadingIcon = nullptr;
+ SAFE_DELETE(_loadingIcon);
deleteSaveThumbnail();
@@ -334,25 +318,20 @@ bool BaseGame::cleanup() {
_fader = nullptr;
for (int32 i = 0; i < _regObjects.getSize(); i++) {
- delete _regObjects[i];
- _regObjects[i] = nullptr;
+ SAFE_DELETE(_regObjects[i]);
}
_regObjects.removeAll();
_windows.removeAll(); // refs only
_focusedWindow = nullptr; // ref only
+ //m_AccessShieldWin = nullptr;
- delete _cursorNoninteractive;
- _cursorNoninteractive = nullptr;
- delete _cursor;
- _cursor = nullptr;
- delete _activeCursor;
- _activeCursor = nullptr;
+ SAFE_DELETE(_cursorNoninteractive);
+ SAFE_DELETE(_cursor);
+ SAFE_DELETE(_activeCursor);
- delete _scValue;
- _scValue = nullptr;
- delete _sFX;
- _sFX = nullptr;
+ SAFE_DELETE(_scValue);
+ SAFE_DELETE(_sFX);
for (int32 i = 0; i < _scripts.getSize(); i++) {
_scripts[i]->_owner = nullptr;
@@ -384,15 +363,15 @@ bool BaseGame::cleanup() {
setName(nullptr);
setFilename(nullptr);
for (int i = 0; i < 7; i++) {
- delete[] _caption[i];
- _caption[i] = nullptr;
+ SAFE_DELETE_ARRAY(_caption[i]);
}
_lastCursor = nullptr;
- delete _keyboardState;
- _keyboardState = nullptr;
+ SAFE_DELETE(_keyboardState);
+ //if(m_AccessMgr) m_AccessMgr->SetActiveObject(NULL);
+
return STATUS_OK;
}
@@ -513,13 +492,14 @@ bool BaseGame::initialize1() {
if (loaded == true) {
return STATUS_OK;
} else {
- delete _mathClass;
delete _directoryClass;
+ delete _mathClass;
delete _keyboardState;
delete _transMgr;
delete _surfaceStorage;
delete _fontStorage;
delete _soundMgr;
+ //delete m_AccessMgr;
delete _scEngine;
delete _videoPlayer;
return STATUS_FAILED;
@@ -949,32 +929,28 @@ bool BaseGame::loadBuffer(char *buffer, bool complete) {
#endif
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_ACTIVE_CURSOR:
- delete _activeCursor;
- _activeCursor = nullptr;
+ SAFE_DELETE(_activeCursor);
_activeCursor = new BaseSprite(_gameRef);
if (!_activeCursor || DID_FAIL(_activeCursor->loadFile(params))) {
- delete _activeCursor;
- _activeCursor = nullptr;
+ SAFE_DELETE(_activeCursor);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_NONINTERACTIVE_CURSOR:
- delete _cursorNoninteractive;
+ SAFE_DELETE(_cursorNoninteractive);
_cursorNoninteractive = new BaseSprite(_gameRef);
if (!_cursorNoninteractive || DID_FAIL(_cursorNoninteractive->loadFile(params))) {
- delete _cursorNoninteractive;
- _cursorNoninteractive = nullptr;
+ SAFE_DELETE(_cursorNoninteractive);
cmd = PARSERR_GENERIC;
}
break;
@@ -1362,7 +1338,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
type = (int)VID_PLAY_STRETCH;
}
- delete _theoraPlayer;
+ SAFE_DELETE(_theoraPlayer);
_theoraPlayer = new VideoTheoraPlayer(this);
if (_theoraPlayer && DID_SUCCEED(_theoraPlayer->initialize(filename, subtitleFile))) {
_theoraPlayer->_dontDropFrames = !dropFrames;
@@ -1374,8 +1350,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
}
} else {
stack->pushBool(false);
- delete _theoraPlayer;
- _theoraPlayer = nullptr;
+ SAFE_DELETE(_theoraPlayer);
}
return STATUS_OK;
@@ -1705,8 +1680,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "RemoveActiveCursor") == 0) {
stack->correctParams(0);
- delete _activeCursor;
- _activeCursor = nullptr;
+ SAFE_DELETE(_activeCursor);
stack->pushNULL();
return STATUS_OK;
@@ -1968,9 +1942,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "RemoveWaitCursor") == 0) {
stack->correctParams(0);
- delete _cursorNoninteractive;
- _cursorNoninteractive = nullptr;
-
+ SAFE_DELETE(_cursorNoninteractive);
stack->pushNULL();
return STATUS_OK;
@@ -2024,11 +1996,10 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
_loadingIconY = stack->pop()->getInt();
_loadingIconPersistent = stack->pop()->getBool();
- delete _loadingIcon;
+ SAFE_DELETE(_loadingIcon);
_loadingIcon = new BaseSprite(this);
if (!_loadingIcon || DID_FAIL(_loadingIcon->loadFile(filename))) {
- delete _loadingIcon;
- _loadingIcon = nullptr;
+ SAFE_DELETE(_loadingIcon);
} else {
displayContent(false, true);
_gameRef->_renderer->flip();
@@ -2044,8 +2015,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "HideLoadingIcon") == 0) {
stack->correctParams(0);
- delete _loadingIcon;
- _loadingIcon = nullptr;
+ SAFE_DELETE(_loadingIcon);
stack->pushNULL();
return STATUS_OK;
}
@@ -4349,8 +4319,7 @@ bool BaseGame::setWaitCursor(const char *filename) {
_cursorNoninteractive = new BaseSprite(_gameRef);
if (!_cursorNoninteractive || DID_FAIL(_cursorNoninteractive->loadFile(filename))) {
- delete _cursorNoninteractive;
- _cursorNoninteractive = nullptr;
+ SAFE_DELETE(_cursorNoninteractive);
return STATUS_FAILED;
} else {
return STATUS_OK;
@@ -4375,8 +4344,7 @@ bool BaseGame::stopVideo() {
}
if (_theoraPlayer && _theoraPlayer->isPlaying()) {
_theoraPlayer->stop();
- delete _theoraPlayer;
- _theoraPlayer = nullptr;
+ SAFE_DELETE(_theoraPlayer);
}
return STATUS_OK;
}
@@ -4412,8 +4380,7 @@ bool BaseGame::storeSaveThumbnail() {
//////////////////////////////////////////////////////////////////////////
void BaseGame::deleteSaveThumbnail() {
- delete _cachedThumbnail;
- _cachedThumbnail = nullptr;
+ SAFE_DELETE(_cachedThumbnail);
}
diff --git a/engines/wintermute/base/base_named_object.cpp b/engines/wintermute/base/base_named_object.cpp
index 40cf6a100d7..9369ac67a54 100644
--- a/engines/wintermute/base/base_named_object.cpp
+++ b/engines/wintermute/base/base_named_object.cpp
@@ -26,6 +26,7 @@
*/
#include "engines/wintermute/base/base_named_object.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -47,15 +48,13 @@ BaseNamedObject::BaseNamedObject(TDynamicConstructor, TDynamicConstructor) {
//////////////////////////////////////////////////////////////////////////
BaseNamedObject::~BaseNamedObject() {
- delete[] _name;
- _name = nullptr;
+ SAFE_DELETE_ARRAY(_name);
}
//////////////////////////////////////////////////////////////////////
void BaseNamedObject::setName(const char *name) {
- delete[] _name;
- _name = nullptr;
+ SAFE_DELETE_ARRAY(_name);
if (name == nullptr) {
return;
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index cbb34e9fa81..fdf1cc203a9 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
#ifdef ENABLE_WME3D
#include "engines/wintermute/base/base_engine.h"
@@ -139,28 +140,21 @@ bool BaseObject::cleanup() {
}
BaseScriptHolder::cleanup();
- delete[] _soundEvent;
- _soundEvent = nullptr;
+ SAFE_DELETE_ARRAY(_soundEvent);
if (!_sharedCursors) {
- delete _cursor;
- _cursor = nullptr;
- delete _activeCursor;
- _activeCursor = nullptr;
+ SAFE_DELETE(_cursor);
+ SAFE_DELETE(_activeCursor);
}
- delete _sFX;
- _sFX = nullptr;
+ SAFE_DELETE(_sFX);
for (int i = 0; i < 7; i++) {
- delete[] _caption[i];
- _caption[i] = nullptr;
+ SAFE_DELETE_ARRAY(_caption[i]);
}
#ifdef ENABLE_WME3D
- delete _xmodel;
- _xmodel = nullptr;
- delete _shadowModel;
- _shadowModel = nullptr;
+ SAFE_DELETE(_xmodel);
+ SAFE_DELETE(_shadowModel);
if (_shadowImage) {
_gameRef->_surfaceStorage->removeSurface(_shadowImage);
@@ -184,7 +178,7 @@ void BaseObject::setCaption(const char *caption, int caseVal) {
if (caseVal < 1 || caseVal > 7)
return;
- delete[] _caption[caseVal - 1];
+ SAFE_DELETE_ARRAY(_caption[caseVal - 1]);
size_t captionSize = strlen(caption) + 1;
_caption[caseVal - 1] = new char[captionSize];
Common::strcpy_s(_caption[caseVal - 1], captionSize, caption);
@@ -257,8 +251,7 @@ bool BaseObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
else if (strcmp(name, "RemoveCursor") == 0) {
stack->correctParams(0);
if (!_sharedCursors) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
} else {
_cursor = nullptr;
@@ -1157,15 +1150,13 @@ bool BaseObject::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
bool BaseObject::setCursor(const char *filename) {
if (!_sharedCursors) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
}
_sharedCursors = false;
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(filename))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
return STATUS_FAILED;
} else {
return STATUS_OK;
@@ -1175,11 +1166,10 @@ bool BaseObject::setCursor(const char *filename) {
//////////////////////////////////////////////////////////////////////////
bool BaseObject::setActiveCursor(const char *filename) {
- delete _activeCursor;
+ SAFE_DELETE(_activeCursor);
_activeCursor = new BaseSprite(_gameRef);
if (!_activeCursor || DID_FAIL(_activeCursor->loadFile(filename))) {
- delete _activeCursor;
- _activeCursor = nullptr;
+ SAFE_DELETE(_activeCursor);
return STATUS_FAILED;
} else {
return STATUS_OK;
@@ -1258,8 +1248,7 @@ bool BaseObject::playSFX(const char *filename, bool looping, bool playNow, const
return STATUS_OK;
}
} else {
- delete _sFX;
- _sFX = nullptr;
+ SAFE_DELETE(_sFX);
return STATUS_FAILED;
}
}
@@ -1270,8 +1259,7 @@ bool BaseObject::stopSFX(bool deleteSound) {
if (_sFX) {
_sFX->stop();
if (deleteSound) {
- delete _sFX;
- _sFX = nullptr;
+ SAFE_DELETE(_sFX);
}
return STATUS_OK;
} else {
@@ -1376,8 +1364,7 @@ bool BaseObject::isReady() {
//////////////////////////////////////////////////////////////////////////
void BaseObject::setSoundEvent(const char *eventName) {
- delete[] _soundEvent;
- _soundEvent = nullptr;
+ SAFE_DELETE_ARRAY(_soundEvent);
if (eventName) {
size_t soundEventSize = strlen(eventName) + 1;
_soundEvent = new char[soundEventSize];
diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index 79095f32a62..6e48f4e070f 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -123,20 +123,16 @@ void BasePersistenceManager::cleanup() {
_thumbnailDataSize = 0;
if (_thumbnailData) {
- delete[] _thumbnailData;
- _thumbnailData = nullptr;
+ SAFE_DELETE_ARRAY(_thumbnailData);
}
_scummVMThumbSize = 0;
if (_scummVMThumbnailData) {
- delete[] _scummVMThumbnailData;
- _scummVMThumbnailData = nullptr;
+ SAFE_DELETE_ARRAY(_scummVMThumbnailData);
}
- delete _loadStream;
- delete _saveStream;
- _loadStream = nullptr;
- _saveStream = nullptr;
+ SAFE_DELETE(_loadStream);
+ SAFE_DELETE(_saveStream);
}
Common::String BasePersistenceManager::getFilenameForSlot(int slot) const {
@@ -298,8 +294,7 @@ bool BasePersistenceManager::initSave(const Common::String &desc) {
// in any case, destroy the cached thumbnail once used
- delete _gameRef->_cachedThumbnail;
- _gameRef->_cachedThumbnail = nullptr;
+ SAFE_DELETE(_gameRef->_cachedThumbnail);
uint32 dataOffset = _offset +
sizeof(uint32) + // data offset
diff --git a/engines/wintermute/base/base_region.cpp b/engines/wintermute/base/base_region.cpp
index 1e67474a9e7..544aa65d946 100644
--- a/engines/wintermute/base/base_region.cpp
+++ b/engines/wintermute/base/base_region.cpp
@@ -35,6 +35,7 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -290,9 +291,7 @@ bool BaseRegion::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
int index = stack->pop()->getInt();
if (index >= 0 && index < _points.getSize()) {
- delete _points[index];
- _points[index] = nullptr;
-
+ SAFE_DELETE(_points[index]);
_points.removeAt(index);
createRegion();
diff --git a/engines/wintermute/base/base_script_holder.cpp b/engines/wintermute/base/base_script_holder.cpp
index 606b27a0e80..75cecbe5a7b 100644
--- a/engines/wintermute/base/base_script_holder.cpp
+++ b/engines/wintermute/base/base_script_holder.cpp
@@ -33,6 +33,7 @@
#include "engines/wintermute/base/scriptables/script_engine.h"
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -55,8 +56,7 @@ BaseScriptHolder::~BaseScriptHolder() {
//////////////////////////////////////////////////////////////////////////
bool BaseScriptHolder::cleanup() {
- delete[] _filename;
- _filename = nullptr;
+ SAFE_DELETE_ARRAY(_filename);
for (int32 i = 0; i < _scripts.getSize(); i++) {
_scripts[i]->finish(true);
@@ -398,14 +398,14 @@ bool BaseScriptHolder::parseProperty(char *buffer, bool complete) {
while ((cmd = parser.getCommand(&buffer, commands, ¶ms)) > 0) {
switch (cmd) {
case TOKEN_NAME: {
- delete[] propName;
+ SAFE_DELETE_ARRAY(propName);
size_t propNameSize = strlen(params) + 1;
propName = new char[propNameSize];
Common::strcpy_s(propName, propNameSize, params);
break;
}
case TOKEN_VALUE: {
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propValue);
size_t propValueSize = strlen(params) + 1;
propValue = new char[propValueSize];
Common::strcpy_s(propValue, propValueSize, params);
@@ -417,14 +417,14 @@ bool BaseScriptHolder::parseProperty(char *buffer, bool complete) {
}
if (cmd == PARSERR_TOKENNOTFOUND) {
- delete[] propName;
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propName);
+ SAFE_DELETE_ARRAY(propValue);
BaseEngine::LOG(0, "Syntax error in PROPERTY definition");
return STATUS_FAILED;
}
if (cmd == PARSERR_GENERIC || propName == nullptr || propValue == nullptr) {
- delete[] propName;
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propName);
+ SAFE_DELETE_ARRAY(propValue);
BaseEngine::LOG(0, "Error loading PROPERTY definition");
return STATUS_FAILED;
}
@@ -435,8 +435,8 @@ bool BaseScriptHolder::parseProperty(char *buffer, bool complete) {
scSetProperty(propName, val);
delete val;
- delete[] propName;
- delete[] propValue;
+ SAFE_DELETE_ARRAY(propName);
+ SAFE_DELETE_ARRAY(propValue);
return STATUS_OK;
}
diff --git a/engines/wintermute/base/base_scriptable.cpp b/engines/wintermute/base/base_scriptable.cpp
index a362659800d..101dbaa4231 100644
--- a/engines/wintermute/base/base_scriptable.cpp
+++ b/engines/wintermute/base/base_scriptable.cpp
@@ -28,6 +28,7 @@
#include "engines/wintermute/base/base_scriptable.h"
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/base_persistence_manager.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -52,10 +53,8 @@ BaseScriptable::BaseScriptable(BaseGame *inGame, bool noValue, bool persistable)
//////////////////////////////////////////////////////////////////////////
BaseScriptable::~BaseScriptable() {
//if (_refCount>0) BaseEngine::LOG(0, "Warning: Destroying object, _refCount=%d", _refCount);
- delete _scValue;
- _scValue = nullptr;
- delete _scProp;
- _scProp = nullptr;
+ SAFE_DELETE(_scValue);
+ SAFE_DELETE(_scProp);
}
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index 2e149b988e5..b4fbda15865 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -41,6 +41,7 @@
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/detection.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -94,8 +95,7 @@ void BaseSprite::cleanup() {
}
_frames.removeAll();
- delete[] _editorBgFile;
- _editorBgFile = nullptr;
+ SAFE_DELETE_ARRAY(_editorBgFile);
setDefaults();
}
@@ -276,7 +276,7 @@ bool BaseSprite::loadBuffer(char *buffer, bool complete, int lifeTime, TSpriteCa
case TOKEN_EDITOR_BG_FILE:
if (_gameRef->_editorMode) {
- delete[] _editorBgFile;
+ SAFE_DELETE_ARRAY(_editorBgFile);
size_t editorBgFileSize = strlen(params) + 1;
_editorBgFile = new char[editorBgFileSize];
Common::strcpy_s(_editorBgFile, editorBgFileSize, params);
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index e1911bf7652..b91eec967c5 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -37,6 +37,7 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -73,8 +74,7 @@ BaseSubFrame::~BaseSubFrame() {
if (_surface) {
_gameRef->_surfaceStorage->removeSurface(_surface);
}
- delete[] _surfaceFilename;
- _surfaceFilename = nullptr;
+ SAFE_DELETE_ARRAY(_surfaceFilename);
}
@@ -121,8 +121,7 @@ bool BaseSubFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
BasePlatform::setRectEmpty(&rect);
char *surfaceFile = nullptr;
- delete _surface;
- _surface = nullptr;
+ SAFE_DELETE(_surface);
while ((cmd = parser.getCommand(&buffer, commands, ¶ms)) > 0) {
switch (cmd) {
@@ -495,8 +494,7 @@ bool BaseSubFrame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS
if (_surface) {
_gameRef->_surfaceStorage->removeSurface(_surface);
}
- delete[] _surfaceFilename;
- _surfaceFilename = nullptr;
+ SAFE_DELETE_ARRAY(_surfaceFilename);
stack->pushBool(true);
} else {
const char *filename = val->getString();
@@ -690,8 +688,7 @@ bool BaseSubFrame::setSurface(const Common::String &filename, bool defaultCK, by
_surface = nullptr;
}
- delete[] _surfaceFilename;
- _surfaceFilename = nullptr;
+ SAFE_DELETE_ARRAY(_surfaceFilename);
_surface = _gameRef->_surfaceStorage->addSurface(filename, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
if (_surface) {
diff --git a/engines/wintermute/base/font/base_font_bitmap.cpp b/engines/wintermute/base/font/base_font_bitmap.cpp
index ac13328e7b1..a2e8f3734dd 100644
--- a/engines/wintermute/base/font/base_font_bitmap.cpp
+++ b/engines/wintermute/base/font/base_font_bitmap.cpp
@@ -38,6 +38,7 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -62,10 +63,8 @@ BaseFontBitmap::BaseFontBitmap(BaseGame *inGame) : BaseFont(inGame) {
//////////////////////////////////////////////////////////////////////
BaseFontBitmap::~BaseFontBitmap() {
- delete _subframe;
- _subframe = nullptr;
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_subframe);
+ SAFE_DELETE(_sprite);
}
@@ -457,11 +456,10 @@ bool BaseFontBitmap::loadBuffer(char *buffer) {
}
if (spriteFile != nullptr) {
- delete _sprite;
+ SAFE_DELETE(_sprite);
_sprite = new BaseSprite(_gameRef, this);
if (!_sprite || DID_FAIL(_sprite->loadFile(spriteFile))) {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
}
}
diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp
index 80254f31c42..f38bcbd0152 100644
--- a/engines/wintermute/base/font/base_font_truetype.cpp
+++ b/engines/wintermute/base/font/base_font_truetype.cpp
@@ -36,6 +36,8 @@
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
+
#include "graphics/fonts/ttf.h"
#include "graphics/fontman.h"
#include "common/unicode-bidi.h"
@@ -73,10 +75,10 @@ BaseFontTT::~BaseFontTT() {
}
_layers.removeAll();
- delete[] _fontFile;
- _fontFile = nullptr;
+ SAFE_DELETE_ARRAY(_fontFile);
+
+ SAFE_DELETE(_deletableFont);
- delete _deletableFont;
_font = nullptr;
}
diff --git a/engines/wintermute/base/gfx/3deffect_params.cpp b/engines/wintermute/base/gfx/3deffect_params.cpp
index eadeb51419f..fe633886568 100644
--- a/engines/wintermute/base/gfx/3deffect_params.cpp
+++ b/engines/wintermute/base/gfx/3deffect_params.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/gfx/3deffect_params.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -122,8 +123,7 @@ Effect3DParams::~Effect3DParams() {
//////////////////////////////////////////////////////////////////////////
void Effect3DParams::clear() {
for (int32 i = 0; i < _params.getSize(); i++) {
- delete _params[i];
- _params[i] = nullptr;
+ SAFE_DELETE(_params[i]);
}
_params.removeAll();
diff --git a/engines/wintermute/base/gfx/3dmesh.cpp b/engines/wintermute/base/gfx/3dmesh.cpp
index 7f7dfe5a924..5b6d0595666 100644
--- a/engines/wintermute/base/gfx/3dmesh.cpp
+++ b/engines/wintermute/base/gfx/3dmesh.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/gfx/3dloader_3ds.h"
#include "engines/wintermute/base/gfx/3dmesh.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -53,12 +54,10 @@ Mesh3DS::~Mesh3DS() {
//////////////////////////////////////////////////////////////////////////
void Mesh3DS::cleanup() {
- delete[] _vertices;
- _vertices = nullptr;
+ SAFE_DELETE_ARRAY(_vertices);
_numVertices = 0;
- delete[] _faces;
- _faces = nullptr;
+ SAFE_DELETE_ARRAY(_faces);
_numFaces = 0;
_vb.free();
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index f6f063f9d39..8cbf52f7f2f 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/base_engine.h"
#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/base/base_persistence_manager.h"
+#include "engines/wintermute/dcgf.h"
#ifdef ENABLE_WME3D
#include "engines/wintermute/base/gfx/xmodel.h"
@@ -79,7 +80,7 @@ BaseRenderer::BaseRenderer(BaseGame *inGame) : BaseClass(inGame) {
BaseRenderer::~BaseRenderer() {
deleteRectList();
unclipCursor();
- delete _saveLoadImage;
+ SAFE_DELETE(_saveLoadImage);
}
//////////////////////////////////////////////////////////////////////
@@ -232,25 +233,21 @@ void BaseRenderer::initSaveLoad(bool isSaving, bool quickSave) {
_hasDrawnSaveLoadImage = false;
if (isSaving && !quickSave) {
- delete _saveLoadImage;
- _saveLoadImage = nullptr;
+ SAFE_DELETE(_saveLoadImage);
if (_saveImageName.size()) {
_saveLoadImage = createSurface();
if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_saveImageName, true, 0, 0, 0))) {
- delete _saveLoadImage;
- _saveLoadImage = nullptr;
+ SAFE_DELETE(_saveLoadImage);
}
}
} else {
- delete _saveLoadImage;
- _saveLoadImage = nullptr;
+ SAFE_DELETE(_saveLoadImage);
if (_loadImageName.size()) {
_saveLoadImage = createSurface();
if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_loadImageName, true, 0, 0, 0))) {
- delete _saveLoadImage;
- _saveLoadImage = nullptr;
+ SAFE_DELETE(_saveLoadImage);
}
}
_loadInProgress = true;
@@ -262,8 +259,7 @@ void BaseRenderer::endSaveLoad() {
_indicatorDisplay = false;
_indicatorWidthDrawn = 0;
- delete _saveLoadImage;
- _saveLoadImage = nullptr;
+ SAFE_DELETE(_saveLoadImage);
}
void BaseRenderer::persistSaveLoadImages(BasePersistenceManager *persistMgr) {
diff --git a/engines/wintermute/base/gfx/skin_mesh_helper.cpp b/engines/wintermute/base/gfx/skin_mesh_helper.cpp
index 05b541ab448..e79ee0b7316 100644
--- a/engines/wintermute/base/gfx/skin_mesh_helper.cpp
+++ b/engines/wintermute/base/gfx/skin_mesh_helper.cpp
@@ -40,10 +40,8 @@ SkinMeshHelper::SkinMeshHelper(DXMesh *mesh, DXSkinInfo *skinInfo) {
//////////////////////////////////////////////////////////////////////////
SkinMeshHelper::~SkinMeshHelper() {
- delete _mesh;
- _mesh = nullptr;
- delete _skinInfo;
- _skinInfo = nullptr;
+ SAFE_DELETE(_mesh);
+ SAFE_DELETE(_skinInfo);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/base/gfx/xanimation_channel.cpp b/engines/wintermute/base/gfx/xanimation_channel.cpp
index bcc73e9f6b3..2352d962e0a 100644
--- a/engines/wintermute/base/gfx/xanimation_channel.cpp
+++ b/engines/wintermute/base/gfx/xanimation_channel.cpp
@@ -44,10 +44,8 @@ AnimationChannel::AnimationChannel(BaseGame *inGame, XModel *model) : BaseClass(
//////////////////////////////////////////////////////////////////////////
AnimationChannel::~AnimationChannel() {
- delete _anim[0];
- _anim[0] = nullptr;
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[0]);
+ SAFE_DELETE(_anim[1]);
_model = nullptr; // ref only
}
@@ -63,16 +61,13 @@ bool AnimationChannel::playAnim(AnimationSet *animSet, uint32 transitionTime, ui
}
if (transitionTime == 0) {
- delete _anim[0];
- _anim[0] = nullptr;
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[0]);
+ SAFE_DELETE(_anim[1]);
_anim[0] = anim;
_transitioning = false;
} else {
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[1]);
if (_anim[0]) {
_anim[1] = anim;
@@ -81,8 +76,7 @@ bool AnimationChannel::playAnim(AnimationSet *animSet, uint32 transitionTime, ui
_transitionStart = _gameRef->_currentTime;
} else {
_anim[0] = anim;
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[1]);
_transitioning = false;
}
}
@@ -94,13 +88,10 @@ bool AnimationChannel::playAnim(AnimationSet *animSet, uint32 transitionTime, ui
bool AnimationChannel::stopAnim(uint32 transitionTime) {
if (transitionTime == 0 || !_anim[0]) {
_transitioning = false;
- delete _anim[0];
- _anim[0] = nullptr;
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[0]);
+ SAFE_DELETE(_anim[1]);
} else {
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[1]);
if (_anim[0]) {
_anim[0]->setLooping(false);
@@ -123,7 +114,7 @@ bool AnimationChannel::update(bool debug) {
_transitioning = false;
// shift second animation to first slot and update it
- delete _anim[0];
+ SAFE_DELETE(_anim[0]);
_anim[0] = _anim[1];
_anim[1] = nullptr;
@@ -217,13 +208,11 @@ bool AnimationChannel::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
bool AnimationChannel::unloadAnim(AnimationSet *animSet) {
if (_anim[0] && _anim[0]->getAnimSet() == animSet) {
- delete _anim[0];
- _anim[0] = nullptr;
+ SAFE_DELETE(_anim[0]);
}
if (_anim[1] && _anim[1]->getAnimSet() == animSet) {
- delete _anim[1];
- _anim[1] = nullptr;
+ SAFE_DELETE(_anim[1]);
}
return true;
diff --git a/engines/wintermute/base/gfx/xanimation_set.cpp b/engines/wintermute/base/gfx/xanimation_set.cpp
index 892ed30a6e0..b81e14de8e5 100644
--- a/engines/wintermute/base/gfx/xanimation_set.cpp
+++ b/engines/wintermute/base/gfx/xanimation_set.cpp
@@ -81,7 +81,7 @@ bool AnimationSet::addEvent(AnimationEvent *event) {
int frameTime = getFrameTime();
if (frameTime < 0) {
_gameRef->LOG(0, "Error adding animation event %s, no keyframes found", event->_eventName);
- delete event;
+ SAFE_DELETE(event);
return false;
}
diff --git a/engines/wintermute/base/gfx/xfile.cpp b/engines/wintermute/base/gfx/xfile.cpp
index 81e65bc591d..fc95906fb98 100644
--- a/engines/wintermute/base/gfx/xfile.cpp
+++ b/engines/wintermute/base/gfx/xfile.cpp
@@ -45,8 +45,7 @@ XFile::~XFile() {
//////////////////////////////////////////////////////////////////////////
bool XFile::closeFile() {
- delete _xfile;
- _xfile = nullptr;
+ SAFE_DELETE(_xfile);
return true;
}
diff --git a/engines/wintermute/base/gfx/xframe_node.cpp b/engines/wintermute/base/gfx/xframe_node.cpp
index 2ee45cb84c4..af5d33c5836 100644
--- a/engines/wintermute/base/gfx/xframe_node.cpp
+++ b/engines/wintermute/base/gfx/xframe_node.cpp
@@ -117,7 +117,7 @@ bool FrameNode::loadFromXData(const Common::String &filename, XModel *model, XFi
_meshes.add(mesh);
return true;
} else {
- delete mesh;
+ SAFE_DELETE(mesh);
return false;
}
} else if (objectType == kXClassFrameTransformMatrix) { // load the transformation matrix
@@ -143,7 +143,7 @@ bool FrameNode::loadFromXData(const Common::String &filename, XModel *model, XFi
res = XModel::loadName(childFrame, xobj);
if (!res) {
BaseEngine::LOG(0, "Error loading frame name");
- delete childFrame;
+ SAFE_DELETE(childFrame);
return res;
}
diff --git a/engines/wintermute/base/gfx/xmesh.cpp b/engines/wintermute/base/gfx/xmesh.cpp
index 1bf462f76ef..ecbeb7335db 100644
--- a/engines/wintermute/base/gfx/xmesh.cpp
+++ b/engines/wintermute/base/gfx/xmesh.cpp
@@ -38,6 +38,7 @@
#include "engines/wintermute/base/gfx/3dutils.h"
#include "engines/wintermute/base/base_engine.h"
#include "engines/wintermute/utils/path_util.h"
+#include "engines/wintermute/dcgf.h"
#include "math/utils.h"
@@ -55,17 +56,12 @@ XMesh::XMesh(Wintermute::BaseGame *inGame) : BaseNamedObject(inGame) {
}
XMesh::~XMesh() {
- delete _skinMesh;
- _skinMesh = nullptr;
- delete _blendedMesh;
- _blendedMesh = nullptr;
- delete _staticMesh;
- _staticMesh = nullptr;
+ SAFE_DELETE(_skinMesh);
+ SAFE_DELETE(_blendedMesh);
+ SAFE_DELETE(_staticMesh);
- delete[] _boneMatrices;
- _boneMatrices = nullptr;
- delete[] _adjacency;
- _adjacency = nullptr;
+ SAFE_DELETE_ARRAY(_boneMatrices);
+ SAFE_DELETE_ARRAY(_adjacency);
_materials.removeAll();
}
@@ -104,8 +100,7 @@ bool XMesh::loadFromXData(const Common::String &filename, XFileData *xobj) {
_skinMesh->getOriginalMesh(&_staticMesh);
_staticMesh->cloneMesh(&_blendedMesh);
- delete _skinMesh;
- _skinMesh = nullptr;
+ SAFE_DELETE(_skinMesh);
if (_blendedMesh) {
uint32 numFaces = _blendedMesh->getNumFaces();
@@ -151,10 +146,9 @@ bool XMesh::loadFromXData(const Common::String &filename, XFileData *xobj) {
bool XMesh::generateMesh() {
uint32 numFaces = _skinMesh->getNumFaces();
- delete _blendedMesh;
- _blendedMesh = nullptr;
+ SAFE_DELETE(_blendedMesh);
- delete[] _adjacency;
+ SAFE_DELETE_ARRAY(_adjacency);
_adjacency = new uint32[numFaces * 3];
// blend the mesh
@@ -350,8 +344,7 @@ bool XMesh::removeMaterialEffect(const Common::String &matName) {
//////////////////////////////////////////////////////////////////////////
bool XMesh::invalidateDeviceObjects() {
if (_skinMesh) {
- delete[] _blendedMesh;
- _blendedMesh = nullptr;
+ SAFE_DELETE(_blendedMesh);
}
for (int32 i = 0; i < _materials.getSize(); i++) {
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index 7f59429035f..a7f3f73bd1b 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -47,6 +47,7 @@
#include "engines/wintermute/utils/path_util.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -83,8 +84,7 @@ XModel::~XModel() {
void XModel::cleanup(bool complete) {
// empty animation channels
for (int i = 0; i < X_NUM_ANIMATION_CHANNELS; i++) {
- delete _channels[i];
- _channels[i] = nullptr;
+ SAFE_DELETE(_channels[i]);
}
// remove animation sets
@@ -95,20 +95,18 @@ void XModel::cleanup(bool complete) {
if (complete) {
for (int32 i = 0; i < _mergedModels.getSize(); ++i) {
- delete[] _mergedModels[i];
+ SAFE_DELETE_ARRAY(_mergedModels[i]);
}
_mergedModels.removeAll();
}
for (int32 i = 0; i < _matSprites.getSize(); i++) {
- delete _matSprites[i];
- _matSprites[i] = nullptr;
+ SAFE_DELETE(_matSprites[i]);
}
_matSprites.removeAll();
// remove root frame
- delete _rootFrame;
- _rootFrame = nullptr;
+ SAFE_DELETE(_rootFrame);
_parentModel = nullptr;
@@ -238,7 +236,7 @@ bool XModel::loadAnimationSet(const Common::String &filename, XFileData *xobj) {
AnimationSet *animSet = new AnimationSet(_gameRef, this);
res = loadName(animSet, xobj);
if (!res) {
- delete animSet;
+ SAFE_DELETE(animSet);
return res;
}
@@ -261,7 +259,7 @@ bool XModel::loadAnimationSet(const Common::String &filename, XFileData *xobj) {
if (res) {
res = xchildData.getType(objectType);
if (!res) {
- delete animSet;
+ SAFE_DELETE(animSet);
BaseEngine::LOG(0, "Error getting object type while loading animation set");
return res;
}
@@ -269,7 +267,7 @@ bool XModel::loadAnimationSet(const Common::String &filename, XFileData *xobj) {
if (objectType == kXClassAnimation) {
res = loadAnimation(filename, &xchildData, animSet);
if (!res) {
- delete animSet;
+ SAFE_DELETE(animSet);
return res;
}
}
@@ -306,10 +304,9 @@ bool XModel::loadAnimation(const Common::String &filename, XFileData *xobj, Anim
if (res) {
res = anim->load(&xchildData, parentAnimSet);
if (!res) {
- delete anim;
- if (newAnimSet) {
- delete parentAnimSet;
- }
+ SAFE_DELETE(anim);
+ if (newAnimSet)
+ SAFE_DELETE(parentAnimSet);
return res;
}
}
@@ -775,14 +772,14 @@ bool XModel::parseEvent(AnimationSet *anim, char *buffer) {
}
if (cmd != PARSERR_EOF) {
- delete event;
+ SAFE_DELETE(event);
return false;
}
if (event->_eventName) {
anim->addEvent(event);
} else {
- delete event;
+ SAFE_DELETE(event);
}
return true;
@@ -800,7 +797,7 @@ bool XModel::setMaterialSprite(const char *materialName, const char *spriteFilen
BaseSprite *sprite = new BaseSprite(_gameRef);
if (!sprite || !sprite->loadFile(spriteFilename)) {
- delete sprite;
+ SAFE_DELETE(sprite);
return false;
}
@@ -835,7 +832,7 @@ bool XModel::setMaterialTheora(const char *materialName, const char *theoraFilen
VideoTheoraPlayer *theora = new VideoTheoraPlayer(_gameRef);
if (!theora || theora->initialize(theoraFilename)) {
- delete theora;
+ SAFE_DELETE(theora);
return false;
}
@@ -870,7 +867,7 @@ bool XModel::setMaterialEffect(const char *materialName, const char *effectFilen
Effect3D *effect = new Effect3D(_gameRef);
if (!effect->createFromFile(effectFilename)) {
- delete effect;
+ SAFE_DELETE(effect);
return false;
}
@@ -901,8 +898,7 @@ bool XModel::removeMaterialEffect(const char *materialName) {
for (int32 i = 0; i < _matSprites.getSize(); i++) {
if (scumm_stricmp(_matSprites[i]->_matName, materialName) == 0) {
- delete _matSprites[i];
- _matSprites[i] = nullptr;
+ SAFE_DELETE(_matSprites[i]);
_matSprites.removeAt(i);
_rootFrame->removeMaterialEffect(materialName);
return true;
@@ -971,8 +967,7 @@ bool XModel::initializeSimple() {
_matSprites[i]->_effect = effect;
_rootFrame->setMaterialEffect(_matSprites[i]->_matName, _matSprites[i]->_effect, _matSprites[i]->_effectParams);
} else {
- delete effect;
- effect = nullptr;
+ SAFE_DELETE(effect);
}
}
}
@@ -1112,7 +1107,7 @@ bool XModel::unloadAnimation(const char *animName) {
}
found = true;
- delete _animationSets[i];
+ SAFE_DELETE(_animationSets[i]);
_animationSets.removeAt(i);
i++;
}
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index bb0d3bb31a8..a9006f3bb51 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -38,6 +38,8 @@
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
#include "math/utils.h"
@@ -111,8 +113,7 @@ PartEmitter::~PartEmitter() {
}
_sprites.removeAll();
- delete[] _emitEvent;
- _emitEvent = nullptr;
+ SAFE_DELETE_ARRAY(_emitEvent);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/base/particles/part_particle.cpp b/engines/wintermute/base/particles/part_particle.cpp
index 4eac02e1532..ed304e82e7e 100644
--- a/engines/wintermute/base/particles/part_particle.cpp
+++ b/engines/wintermute/base/particles/part_particle.cpp
@@ -30,6 +30,8 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
namespace Wintermute {
@@ -63,8 +65,7 @@ PartParticle::PartParticle(BaseGame *inGame) : BaseClass(inGame) {
//////////////////////////////////////////////////////////////////////////
PartParticle::~PartParticle() {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
}
//////////////////////////////////////////////////////////////////////////
@@ -74,8 +75,7 @@ bool PartParticle::setSprite(const Common::String &filename) {
return STATUS_OK;
}
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
SystemClassRegistry::getInstance()->_disabled = true;
_sprite = new BaseSprite(_gameRef, (BaseObject*)_gameRef);
@@ -83,8 +83,7 @@ bool PartParticle::setSprite(const Common::String &filename) {
SystemClassRegistry::getInstance()->_disabled = false;
return STATUS_OK;
} else {
- delete _sprite;
- _sprite = nullptr;
+ SAFE_DELETE(_sprite);
SystemClassRegistry::getInstance()->_disabled = false;
return STATUS_FAILED;
}
diff --git a/engines/wintermute/base/scriptables/script.cpp b/engines/wintermute/base/scriptables/script.cpp
index b91bc9d01b1..3f532d4f389 100644
--- a/engines/wintermute/base/scriptables/script.cpp
+++ b/engines/wintermute/base/scriptables/script.cpp
@@ -33,6 +33,8 @@
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/ext/externals.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/memstream.h"
#ifdef ENABLE_FOXTAIL
@@ -258,8 +260,7 @@ bool ScScript::create(const char *filename, byte *buffer, uint32 size, BaseScrip
_thread = false;
_methodThread = false;
- delete[] _threadEvent;
- _threadEvent = nullptr;
+ SAFE_DELETE_ARRAY(_threadEvent);
size_t filenameSize = strlen(filename) + 1;
_filename = new char[filenameSize];
@@ -444,13 +445,10 @@ void ScScript::cleanup() {
_externals = nullptr;
_numExternals = 0;
- delete _operand;
- _operand = nullptr;
- delete _reg1;
- _reg1 = nullptr;
+ SAFE_DELETE(_operand);
+ SAFE_DELETE(_reg1);
- delete[] _threadEvent;
- _threadEvent = nullptr;
+ SAFE_DELETE_ARRAY(_threadEvent);
_state = SCRIPT_FINISHED;
@@ -461,8 +459,7 @@ void ScScript::cleanup() {
_parentScript = nullptr; // ref only
- delete _scriptStream;
- _scriptStream = nullptr;
+ SAFE_DELETE(_scriptStream);
}
diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp
index 0ec291036ed..82013916514 100644
--- a/engines/wintermute/base/scriptables/script_engine.cpp
+++ b/engines/wintermute/base/scriptables/script_engine.cpp
@@ -33,6 +33,7 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -110,8 +111,7 @@ bool ScEngine::cleanup() {
_scripts.removeAll();
- delete _globals;
- _globals = nullptr;
+ SAFE_DELETE(_globals);
emptyScriptCache();
@@ -481,8 +481,7 @@ int ScEngine::getNumScripts(int *running, int *waiting, int *persistent) {
bool ScEngine::emptyScriptCache() {
for (int i = 0; i < MAX_CACHED_SCRIPTS; i++) {
if (_cachedScripts[i]) {
- delete _cachedScripts[i];
- _cachedScripts[i] = nullptr;
+ SAFE_DELETE(_cachedScripts[i]);
}
}
return STATUS_OK;
diff --git a/engines/wintermute/base/scriptables/script_ext_array.cpp b/engines/wintermute/base/scriptables/script_ext_array.cpp
index 1ab2462ce21..d760194279b 100644
--- a/engines/wintermute/base/scriptables/script_ext_array.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_array.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/system/sys_instance.h"
#include "engines/wintermute/base/scriptables/script_ext_array.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -67,8 +68,7 @@ SXArray::SXArray(BaseGame *inGame) : BaseScriptable(inGame) {
//////////////////////////////////////////////////////////////////////////
SXArray::~SXArray() {
- delete _values;
- _values = nullptr;
+ SAFE_DELETE(_values);
}
diff --git a/engines/wintermute/base/scriptables/script_ext_file.cpp b/engines/wintermute/base/scriptables/script_ext_file.cpp
index c06437a3ffb..0a9611d1fdb 100644
--- a/engines/wintermute/base/scriptables/script_ext_file.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_file.cpp
@@ -35,6 +35,7 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/base/scriptables/script_ext_file.h"
+#include "engines/wintermute/dcgf.h"
// Note: This code is completely untested, as I have yet to find a game that uses SXFile.
@@ -71,8 +72,7 @@ SXFile::~SXFile() {
//////////////////////////////////////////////////////////////////////////
void SXFile::cleanup() {
- delete[] _filename;
- _filename = nullptr;
+ SAFE_DELETE_ARRAY(_filename);
close();
}
@@ -85,8 +85,7 @@ void SXFile::close() {
}
if (_writeFile) {
_writeFile->finalize();
- delete _writeFile;
- _writeFile = nullptr;
+ SAFE_DELETE(_writeFile);
}
_mode = 0;
_textMode = false;
diff --git a/engines/wintermute/base/scriptables/script_ext_string.cpp b/engines/wintermute/base/scriptables/script_ext_string.cpp
index 4cfab371f37..32acfa274c1 100644
--- a/engines/wintermute/base/scriptables/script_ext_string.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_string.cpp
@@ -32,6 +32,8 @@
#include "engines/wintermute/base/scriptables/script_ext_string.h"
#include "engines/wintermute/base/scriptables/script_ext_array.h"
#include "engines/wintermute/utils/string_util.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/str.h"
#include "common/tokenizer.h"
@@ -79,7 +81,7 @@ void SXString::setStringVal(const char *val) {
int len = strlen(val);
if (len >= _capacity) {
_capacity = len + 1;
- delete[] _string;
+ SAFE_DELETE_ARRAY(_string);
_string = new char[_capacity]();
}
Common::strcpy_s(_string, _capacity, val);
@@ -396,7 +398,7 @@ bool SXString::scSetProperty(const char *name, ScValue *value) {
char *newStr = new char[newCap]();
if (newStr) {
Common::strcpy_s(newStr, newCap, _string);
- delete[] _string;
+ SAFE_DELETE_ARRAY(_string);
_string = newStr;
_capacity = newCap;
}
diff --git a/engines/wintermute/base/sound/base_sound_buffer.cpp b/engines/wintermute/base/sound/base_sound_buffer.cpp
index af9ece8407d..53a1839de5f 100644
--- a/engines/wintermute/base/sound/base_sound_buffer.cpp
+++ b/engines/wintermute/base/sound/base_sound_buffer.cpp
@@ -30,6 +30,8 @@
#include "engines/wintermute/base/sound/base_sound_buffer.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
+
#include "audio/audiostream.h"
#include "audio/mixer.h"
#ifdef USE_VORBIS
@@ -76,11 +78,9 @@ BaseSoundBuffer::~BaseSoundBuffer() {
if (_handle) {
g_system->getMixer()->stopHandle(*_handle);
- delete _handle;
- _handle = nullptr;
+ SAFE_DELETE(_handle);
}
- delete _stream;
- _stream = nullptr;
+ SAFE_DELETE(_stream);
}
@@ -138,8 +138,7 @@ bool BaseSoundBuffer::loadFromFile(const Common::String &filename, bool forceRel
bool BaseSoundBuffer::play(bool looping, uint32 startSample) {
if (_handle) {
g_system->getMixer()->stopHandle(*_handle);
- delete _handle;
- _handle = nullptr;
+ SAFE_DELETE(_handle);
}
// Store the loop-value for save-games.
setLooping(looping);
diff --git a/engines/wintermute/dcgf.h b/engines/wintermute/dcgf.h
index b3d4d13e490..8b188f7b4c9 100644
--- a/engines/wintermute/dcgf.h
+++ b/engines/wintermute/dcgf.h
@@ -47,4 +47,16 @@
#define COMPRESSED_FILE_MAGIC 0x504D435A // ZCMP
+#define SAFE_DELETE(obj) \
+do { \
+ delete (obj); \
+ (obj) = nullptr; \
+} while (0)
+
+#define SAFE_DELETE_ARRAY(obj) \
+do { \
+ delete[] (obj); \
+ (obj) = nullptr; \
+} while (0)
+
#endif
diff --git a/engines/wintermute/ui/ui_button.cpp b/engines/wintermute/ui/ui_button.cpp
index 3b52e1a5f59..310fe4981cc 100644
--- a/engines/wintermute/ui/ui_button.cpp
+++ b/engines/wintermute/ui/ui_button.cpp
@@ -40,6 +40,7 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -230,101 +231,91 @@ bool UIButton::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BACK:
- delete _back;
+ SAFE_DELETE(_back);
_back = new UITiledImage(_gameRef);
if (!_back || DID_FAIL(_back->loadFile(params))) {
- delete _back;
- _back = nullptr;
+ SAFE_DELETE(_back);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_BACK_HOVER:
- delete _backHover;
+ SAFE_DELETE(_backHover);
_backHover = new UITiledImage(_gameRef);
if (!_backHover || DID_FAIL(_backHover->loadFile(params))) {
- delete _backHover;
- _backHover = nullptr;
+ SAFE_DELETE(_backHover);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_BACK_PRESS:
- delete _backPress;
+ SAFE_DELETE(_backPress);
_backPress = new UITiledImage(_gameRef);
if (!_backPress || DID_FAIL(_backPress->loadFile(params))) {
- delete _backPress;
- _backPress = nullptr;
+ SAFE_DELETE(_backPress);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_BACK_DISABLE:
- delete _backDisable;
+ SAFE_DELETE(_backDisable);
_backDisable = new UITiledImage(_gameRef);
if (!_backDisable || DID_FAIL(_backDisable->loadFile(params))) {
- delete _backDisable;
- _backDisable = nullptr;
+ SAFE_DELETE(_backDisable);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_BACK_FOCUS:
- delete _backFocus;
+ SAFE_DELETE(_backFocus);
_backFocus = new UITiledImage(_gameRef);
if (!_backFocus || DID_FAIL(_backFocus->loadFile(params))) {
- delete _backFocus;
- _backFocus = nullptr;
+ SAFE_DELETE(_backFocus);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE:
- delete _image;
+ SAFE_DELETE(_image);
_image = new BaseSprite(_gameRef);
if (!_image || DID_FAIL(_image->loadFile(params))) {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE_HOVER:
- delete _imageHover;
+ SAFE_DELETE(_imageHover);
_imageHover = new BaseSprite(_gameRef);
if (!_imageHover || DID_FAIL(_imageHover->loadFile(params))) {
- delete _imageHover;
- _imageHover = nullptr;
+ SAFE_DELETE(_imageHover);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE_PRESS:
- delete _imagePress;
+ SAFE_DELETE(_imagePress);
_imagePress = new BaseSprite(_gameRef);
if (!_imagePress || DID_FAIL(_imagePress->loadFile(params))) {
- delete _imagePress;
- _imagePress = nullptr;
+ SAFE_DELETE(_imagePress);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE_DISABLE:
- delete _imageDisable;
+ SAFE_DELETE(_imageDisable);
_imageDisable = new BaseSprite(_gameRef);
if (!_imageDisable || DID_FAIL(_imageDisable->loadFile(params))) {
- delete _imageDisable;
- _imageDisable = nullptr;
+ SAFE_DELETE(_imageDisable);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE_FOCUS:
- delete _imageFocus;
+ SAFE_DELETE(_imageFocus);
_imageFocus = new BaseSprite(_gameRef);
if (!_imageFocus || DID_FAIL(_imageFocus->loadFile(params))) {
- delete _imageFocus;
- _imageFocus = nullptr;
+ SAFE_DELETE(_imageFocus);
cmd = PARSERR_GENERIC;
}
break;
@@ -411,11 +402,10 @@ bool UIButton::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
@@ -901,8 +891,7 @@ bool UIButton::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
_imageDisable = new BaseSprite(_gameRef);
const char *filename = stack->pop()->getString();
if (!_imageDisable || DID_FAIL(_imageDisable->loadFile(filename))) {
- delete _imageDisable;
- _imageDisable = nullptr;
+ SAFE_DELETE(_imageDisable);
stack->pushBool(false);
} else {
stack->pushBool(true);
@@ -946,12 +935,11 @@ bool UIButton::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
else if (strcmp(name, "SetHoverImage") == 0) {
stack->correctParams(1);
- delete _imageHover;
+ SAFE_DELETE(_imageHover);
_imageHover = new BaseSprite(_gameRef);
const char *filename = stack->pop()->getString();
if (!_imageHover || DID_FAIL(_imageHover->loadFile(filename))) {
- delete _imageHover;
- _imageHover = nullptr;
+ SAFE_DELETE(_imageHover);
stack->pushBool(false);
} else {
stack->pushBool(true);
@@ -994,12 +982,11 @@ bool UIButton::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
else if (strcmp(name, "SetPressedImage") == 0) {
stack->correctParams(1);
- delete _imagePress;
+ SAFE_DELETE(_imagePress);
_imagePress = new BaseSprite(_gameRef);
const char *filename = stack->pop()->getString();
if (!_imagePress || DID_FAIL(_imagePress->loadFile(filename))) {
- delete _imagePress;
- _imagePress = nullptr;
+ SAFE_DELETE(_imagePress);
stack->pushBool(false);
} else {
stack->pushBool(true);
@@ -1042,12 +1029,11 @@ bool UIButton::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
else if (strcmp(name, "SetFocusedImage") == 0) {
stack->correctParams(1);
- delete _imageFocus;
+ SAFE_DELETE(_imageFocus);
_imageFocus = new BaseSprite(_gameRef);
const char *filename = stack->pop()->getString();
if (!_imageFocus || DID_FAIL(_imageFocus->loadFile(filename))) {
- delete _imageFocus;
- _imageFocus = nullptr;
+ SAFE_DELETE(_imageFocus);
stack->pushBool(false);
} else {
stack->pushBool(true);
diff --git a/engines/wintermute/ui/ui_edit.cpp b/engines/wintermute/ui/ui_edit.cpp
index abeb00d1f7f..be5f41791a8 100644
--- a/engines/wintermute/ui/ui_edit.cpp
+++ b/engines/wintermute/ui/ui_edit.cpp
@@ -44,6 +44,8 @@
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/dcgf.h"
+
#include "common/util.h"
#include "common/keyboard.h"
@@ -86,8 +88,7 @@ UIEdit::~UIEdit() {
}
}
- delete[] _cursorChar;
- _cursorChar = nullptr;
+ SAFE_DELETE_ARRAY(_cursorChar);
}
@@ -189,21 +190,19 @@ bool UIEdit::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BACK:
- delete _back;
+ SAFE_DELETE(_back);
_back = new UITiledImage(_gameRef);
if (!_back || DID_FAIL(_back->loadFile(params))) {
- delete _back;
- _back = nullptr;
+ SAFE_DELETE(_back);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE:
- delete _image;
+ SAFE_DELETE(_image);
_image = new BaseSprite(_gameRef);
if (!_image || DID_FAIL(_image->loadFile(params))) {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
cmd = PARSERR_GENERIC;
}
break;
@@ -258,11 +257,10 @@ bool UIEdit::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
@@ -558,7 +556,7 @@ void UIEdit::setCursorChar(const char *character) {
if (!character) {
return;
}
- delete[] _cursorChar;
+ SAFE_DELETE_ARRAY(_cursorChar);
size_t cursorCharSize = strlen(character) + 1;
_cursorChar = new char [cursorCharSize];
Common::strcpy_s(_cursorChar, cursorCharSize, character);
@@ -868,7 +866,7 @@ int UIEdit::deleteChars(int start, int end) {
}
memcpy(str + MAX(0, start), _text + end, strlen(_text) - end + 1);
- delete[] _text;
+ SAFE_DELETE_ARRAY(_text);
_text = str;
}
if (_parentNotify && _parent) {
@@ -897,7 +895,7 @@ int UIEdit::insertChars(int pos, const byte *chars, int num) {
memcpy(str + pos, chars, num);
- delete[] _text;
+ SAFE_DELETE_ARRAY(_text);
_text = str;
}
if (_parentNotify && _parent) {
diff --git a/engines/wintermute/ui/ui_entity.cpp b/engines/wintermute/ui/ui_entity.cpp
index 829cc316ac2..86f9d2679ac 100644
--- a/engines/wintermute/ui/ui_entity.cpp
+++ b/engines/wintermute/ui/ui_entity.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/scriptables/script.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -224,8 +225,7 @@ bool UIEntity::setEntity(const char *filename) {
}
_entity = new AdEntity(_gameRef);
if (!_entity || DID_FAIL(_entity->loadFile(filename))) {
- delete _entity;
- _entity = nullptr;
+ SAFE_DELETE(_entity);
return STATUS_FAILED;
} else {
_entity->_nonIntMouseEvents = true;
diff --git a/engines/wintermute/ui/ui_object.cpp b/engines/wintermute/ui/ui_object.cpp
index 58d7e55cb3e..21a52c784d9 100644
--- a/engines/wintermute/ui/ui_object.cpp
+++ b/engines/wintermute/ui/ui_object.cpp
@@ -35,6 +35,7 @@
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
#include "engines/wintermute/base/font/base_font_storage.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -182,8 +183,7 @@ bool UIObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
/* const char *filename = */ val->getString();
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
if (val->isNULL()) {
stack->pushBool(true);
return STATUS_OK;
@@ -191,8 +191,7 @@ bool UIObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
_image = new BaseSprite(_gameRef);
if (!_image || DID_FAIL(_image->loadFile(val->getString()))) {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
stack->pushBool(false);
} else {
stack->pushBool(true);
diff --git a/engines/wintermute/ui/ui_text.cpp b/engines/wintermute/ui/ui_text.cpp
index 800175e9a50..8196e3bf144 100644
--- a/engines/wintermute/ui/ui_text.cpp
+++ b/engines/wintermute/ui/ui_text.cpp
@@ -39,6 +39,7 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -198,21 +199,19 @@ bool UIText::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BACK:
- delete _back;
+ SAFE_DELETE(_back);
_back = new UITiledImage(_gameRef);
if (!_back || DID_FAIL(_back->loadFile(params))) {
- delete _back;
- _back = nullptr;
+ SAFE_DELETE(_back);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE:
- delete _image;
+ SAFE_DELETE(_image);
_image = new BaseSprite(_gameRef);
if (!_image || DID_FAIL(_image->loadFile(params))) {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
cmd = PARSERR_GENERIC;
}
break;
@@ -269,11 +268,10 @@ bool UIText::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
diff --git a/engines/wintermute/ui/ui_tiled_image.cpp b/engines/wintermute/ui/ui_tiled_image.cpp
index c3abf822f24..31d2b8890e6 100644
--- a/engines/wintermute/ui/ui_tiled_image.cpp
+++ b/engines/wintermute/ui/ui_tiled_image.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -57,8 +58,7 @@ UITiledImage::UITiledImage(BaseGame *inGame) : BaseObject(inGame) {
//////////////////////////////////////////////////////////////////////////
UITiledImage::~UITiledImage() {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
}
@@ -195,11 +195,10 @@ bool UITiledImage::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_IMAGE:
- delete _image;
+ SAFE_DELETE(_image);
_image = new BaseSubFrame(_gameRef);
if (!_image || DID_FAIL(_image->setSurface(params))) {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
cmd = PARSERR_GENERIC;
}
break;
diff --git a/engines/wintermute/ui/ui_window.cpp b/engines/wintermute/ui/ui_window.cpp
index 8b24dafca0b..36d42e500c2 100644
--- a/engines/wintermute/ui/ui_window.cpp
+++ b/engines/wintermute/ui/ui_window.cpp
@@ -47,6 +47,7 @@
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -96,13 +97,9 @@ UIWindow::~UIWindow() {
//////////////////////////////////////////////////////////////////////////
void UIWindow::cleanup() {
- delete _shieldWindow;
- _shieldWindow = nullptr;
- delete _shieldButton;
- _shieldButton = nullptr;
- delete _viewport;
- _viewport = nullptr;
-
+ SAFE_DELETE(_shieldWindow);
+ SAFE_DELETE(_shieldButton);
+ SAFE_DELETE(_viewport);
delete _backInactive;
if (!_sharedFonts && _fontInactive) {
_gameRef->_fontStorage->removeFont(_fontInactive);
@@ -367,11 +364,10 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_BACK:
- delete _back;
+ SAFE_DELETE(_back);
_back = new UITiledImage(_gameRef);
if (!_back || DID_FAIL(_back->loadFile(params))) {
- delete _back;
- _back = nullptr;
+ SAFE_DELETE(_back);
cmd = PARSERR_GENERIC;
}
break;
@@ -380,28 +376,25 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
delete _backInactive;
_backInactive = new UITiledImage(_gameRef);
if (!_backInactive || DID_FAIL(_backInactive->loadFile(params))) {
- delete _backInactive;
- _backInactive = nullptr;
+ SAFE_DELETE(_backInactive);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE:
- delete _image;
+ SAFE_DELETE(_image);
_image = new BaseSprite(_gameRef);
if (!_image || DID_FAIL(_image->loadFile(params))) {
- delete _image;
- _image = nullptr;
+ SAFE_DELETE(_image);
cmd = PARSERR_GENERIC;
}
break;
case TOKEN_IMAGE_INACTIVE:
- delete _imageInactive;
+ SAFE_DELETE(_imageInactive);
_imageInactive = new BaseSprite(_gameRef);
if (!_imageInactive || DID_FAIL(_imageInactive->loadFile(params))) {
- delete _imageInactive;
- _imageInactive = nullptr;
+ SAFE_DELETE(_imageInactive);
cmd = PARSERR_GENERIC;
}
break;
@@ -466,11 +459,10 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_CURSOR:
- delete _cursor;
+ SAFE_DELETE(_cursor);
_cursor = new BaseSprite(_gameRef);
if (!_cursor || DID_FAIL(_cursor->loadFile(params))) {
- delete _cursor;
- _cursor = nullptr;
+ SAFE_DELETE(_cursor);
cmd = PARSERR_GENERIC;
}
break;
@@ -478,8 +470,7 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
case TOKEN_BUTTON: {
UIButton *btn = new UIButton(_gameRef);
if (!btn || DID_FAIL(btn->loadBuffer(params, false))) {
- delete btn;
- btn = nullptr;
+ SAFE_DELETE(btn);
cmd = PARSERR_GENERIC;
} else {
btn->_parent = this;
@@ -491,8 +482,7 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
case TOKEN_STATIC: {
UIText *text = new UIText(_gameRef);
if (!text || DID_FAIL(text->loadBuffer(params, false))) {
- delete text;
- text = nullptr;
+ SAFE_DELETE(text);
cmd = PARSERR_GENERIC;
} else {
text->_parent = this;
@@ -504,8 +494,7 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
case TOKEN_EDIT: {
UIEdit *edit = new UIEdit(_gameRef);
if (!edit || DID_FAIL(edit->loadBuffer(params, false))) {
- delete edit;
- edit = nullptr;
+ SAFE_DELETE(edit);
cmd = PARSERR_GENERIC;
} else {
edit->_parent = this;
@@ -517,8 +506,7 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
case TOKEN_WINDOW: {
UIWindow *win = new UIWindow(_gameRef);
if (!win || DID_FAIL(win->loadBuffer(params, false))) {
- delete win;
- win = nullptr;
+ SAFE_DELETE(win);
cmd = PARSERR_GENERIC;
} else {
win->_parent = this;
@@ -808,12 +796,11 @@ bool UIWindow::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
else if (strcmp(name, "SetInactiveImage") == 0) {
stack->correctParams(1);
- delete _imageInactive;
+ SAFE_DELETE(_imageInactive);
_imageInactive = new BaseSprite(_gameRef);
const char *filename = stack->pop()->getString();
if (!_imageInactive || DID_FAIL(_imageInactive->loadFile(filename))) {
- delete _imageInactive;
- _imageInactive = nullptr;
+ SAFE_DELETE(_imageInactive);
stack->pushBool(false);
} else {
stack->pushBool(true);
diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp
index f42c678f33f..5d076adcfb6 100644
--- a/engines/wintermute/video/video_player.cpp
+++ b/engines/wintermute/video/video_player.cpp
@@ -33,6 +33,7 @@
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/gfx/base_surface.h"
#include "engines/wintermute/platform_osystem.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -76,15 +77,12 @@ VideoPlayer::~VideoPlayer() {
bool VideoPlayer::cleanup() {
_playing = false;
- delete _subtitler;
- _subtitler = nullptr;
+ SAFE_DELETE(_subtitler);
if (_aviDecoder) {
_aviDecoder->close();
}
- delete _aviDecoder;
- _aviDecoder = nullptr;
- delete _texture;
- _texture = nullptr;
+ SAFE_DELETE(_aviDecoder);
+ SAFE_DELETE(_texture);
return setDefaults();
}
diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp
index 3ab59e2bff0..217544c4f23 100644
--- a/engines/wintermute/video/video_theora_player.cpp
+++ b/engines/wintermute/video/video_theora_player.cpp
@@ -35,6 +35,8 @@
#include "engines/wintermute/base/sound/base_sound_manager.h"
#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/wintermute.h"
+#include "engines/wintermute/dcgf.h"
+
#include "video/theora_decoder.h"
#include "common/system.h"
@@ -96,12 +98,9 @@ void VideoTheoraPlayer::cleanup() {
if (_theoraDecoder) {
_theoraDecoder->close();
}
- delete _subtitler;
- _subtitler = nullptr;
- delete _theoraDecoder;
- _theoraDecoder = nullptr;
- delete _texture;
- _texture = nullptr;
+ SAFE_DELETE(_subtitler);
+ SAFE_DELETE(_theoraDecoder);
+ SAFE_DELETE(_texture);
}
//////////////////////////////////////////////////////////////////////////
@@ -149,8 +148,7 @@ bool VideoTheoraPlayer::resetStream() {
if (_theoraDecoder) {
_theoraDecoder->close();
}
- delete _theoraDecoder;
- _theoraDecoder = nullptr;
+ SAFE_DELETE(_theoraDecoder);
#if defined (USE_THEORADEC)
// Load a file, but avoid having the File-manager handle the disposal of it.
More information about the Scummvm-git-logs
mailing list