Skip to content

Commit 2cd2e2f

Browse files
committed
Use functions for safely deleting pointers.
There are three reasons for this: two of which come from [StackOverflow](http://stackoverflow.com/a/540946): * Only evaluate the item inside the function once instead of multiple times. * The function is safely within a scope. * We only delete if there are items to delete: no double deletion.
1 parent 5a99516 commit 2cd2e2f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+248
-195
lines changed

src/Actor.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ Actor::~Actor()
178178
UnsubscribeAll();
179179
for (auto *wrapper: m_WrapperStates)
180180
{
181-
SAFE_DELETE(wrapper);
181+
Rage::safe_delete(wrapper);
182182
}
183183
m_WrapperStates.clear();
184184
}
@@ -1038,7 +1038,7 @@ void Actor::AddWrapperState()
10381038
void Actor::RemoveWrapperState(size_t i)
10391039
{
10401040
ASSERT(i < m_WrapperStates.size());
1041-
SAFE_DELETE(m_WrapperStates[i]);
1041+
Rage::safe_delete(m_WrapperStates[i]);
10421042
m_WrapperStates.erase(m_WrapperStates.begin()+i);
10431043
}
10441044

src/ActorFrame.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "ActorFrame.h"
33
#include "arch/Dialog/Dialog.h"
44
#include "RageUtil.h"
5+
#include "RageUtil.hpp"
56
#include "RageLog.h"
67
#include "XmlFile.h"
78
#include "ActorUtil.h"
@@ -817,7 +818,7 @@ class LunaActorFrame : public Luna<ActorFrame>
817818
if(child)
818819
{
819820
p->RemoveChild(child);
820-
SAFE_DELETE(child);
821+
Rage::safe_delete(child);
821822
}
822823
COMMON_RETURN_SELF;
823824
}

src/Background.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ void BackgroundImpl::Layer::UpdateCurBGChange( const Song *pSong, float fLastMus
768768
XNode *pNode = change.m_def.CreateNode();
769769
std::string xml = Rage::trim(XmlFileUtil::GetXML( pNode ));
770770
LuaHelpers::ReportScriptErrorFmt( "Tried to switch to a background that was never loaded:\n%s", xml.c_str() );
771-
SAFE_DELETE( pNode );
771+
Rage::safe_delete( pNode );
772772
return;
773773
}
774774

@@ -992,7 +992,7 @@ void BrightnessOverlay::FadeToActualBrightness()
992992
}
993993

994994
Background::Background() { m_disable_draw= false; m_pImpl = new BackgroundImpl; this->AddChild(m_pImpl); }
995-
Background::~Background() { SAFE_DELETE( m_pImpl ); }
995+
Background::~Background() { Rage::safe_delete( m_pImpl ); }
996996
void Background::Init() { m_pImpl->Init(); }
997997
void Background::LoadFromSong( const Song *pSong ) { m_pImpl->LoadFromSong(pSong); }
998998
void Background::Unload() { m_pImpl->Unload(); }

src/CMakeProject-rage.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ list(APPEND RAGE_HPP
2222
"${SM_SRC_DIR}/rage/RageSpriteVertex.hpp"
2323
"${SM_SRC_DIR}/rage/RageString.hpp"
2424
"${SM_SRC_DIR}/rage/RageUnicode.hpp"
25+
"${SM_SRC_DIR}/rage/RageUtil.hpp"
2526
"${SM_SRC_DIR}/rage/RageVColor.hpp"
2627
"${SM_SRC_DIR}/rage/RageVector2.hpp"
2728
"${SM_SRC_DIR}/rage/RageVector3.hpp"

src/CharacterManager.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ CharacterManager::CharacterManager()
2323

2424
for (auto *character: m_pCharacters)
2525
{
26-
SAFE_DELETE( character );
26+
Rage::safe_delete( character );
2727
}
2828
m_pCharacters.clear();
2929

@@ -61,7 +61,7 @@ CharacterManager::~CharacterManager()
6161
{
6262
for (auto *character: m_pCharacters)
6363
{
64-
SAFE_DELETE( character );
64+
Rage::safe_delete( character );
6565
}
6666
// Unregister with Lua.
6767
LUA->UnsetGlobal( "CHARMAN" );

src/CreateZip.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ typedef char TCHAR;
1414
#include "CreateZip.h"
1515
#include "RageFile.h"
1616
#include "RageUtil.h"
17+
#include "RageUtil.hpp"
1718

1819
#define MAX_PATH 1024
1920

@@ -679,7 +680,7 @@ ZRESULT TZip::open_file(const TCHAR *fn)
679680
hfin = new RageFile();
680681
if( !hfin->Open(fn) )
681682
{
682-
SAFE_DELETE( hfin );
683+
Rage::safe_delete( hfin );
683684
return ZR_NOFILE;
684685
}
685686
isize = hfin->GetFileSize();
@@ -757,7 +758,7 @@ unsigned TZip::read(char *buf, unsigned size)
757758
ZRESULT TZip::iclose()
758759
{
759760
if (hfin!=0)
760-
SAFE_DELETE( hfin);
761+
Rage::safe_delete( hfin);
761762
bool mismatch = (isize!=-1 && isize!=ired);
762763
isize=ired; // and crc has been being updated anyway
763764
if (mismatch)

src/CryptManager.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "global.h"
22
#include "CryptManager.h"
33
#include "RageUtil.h"
4+
#include "RageUtil.hpp"
45
#include "RageLog.h"
56
#include "RageFile.h"
67
#include "RageFileManager.h"
@@ -133,7 +134,7 @@ void CryptManager::GenerateGlobalKeys()
133134

134135
CryptManager::~CryptManager()
135136
{
136-
SAFE_DELETE( g_pPRNG );
137+
Rage::safe_delete( g_pPRNG );
137138
// Unregister with Lua.
138139
LUA->UnsetGlobal( "CRYPTMAN" );
139140
}

src/CubicSpline.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "RageMath.hpp"
44
#include "RageLog.h"
55
#include "RageUtil.h"
6+
#include "RageUtil.hpp"
67
#include <list>
78
using std::list;
89

@@ -979,7 +980,7 @@ struct LunaCubicSplineN : Luna<CubicSplineN>
979980
luaL_error(L, "This spline cannot be destroyed because it is "
980981
"owned by an actor that relies on it existing.");
981982
}
982-
SAFE_DELETE(p);
983+
Rage::safe_delete(p);
983984
return 0;
984985
}
985986
LunaCubicSplineN()

src/GameLoop.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ namespace
136136
{
137137
void DoChangeTheme()
138138
{
139-
SAFE_DELETE( SCREENMAN );
139+
Rage::safe_delete( SCREENMAN );
140140
TEXTUREMAN->DoDelayedDelete();
141141

142142
// In case the previous theme overloaded class bindings, reinitialize them.
@@ -200,7 +200,7 @@ namespace
200200

201201
if(theme_changing)
202202
{
203-
SAFE_DELETE(SCREENMAN);
203+
Rage::safe_delete(SCREENMAN);
204204
TEXTUREMAN->DoDelayedDelete();
205205
LUA->RegisterTypes();
206206
THEME->SwitchThemeAndLanguage(g_NewTheme, THEME->GetCurLanguage(),

src/GameSoundManager.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,8 @@ GameSoundManager::~GameSoundManager()
456456
MusicThread.Wait();
457457
LOG->Trace("Music start thread shut down.");
458458

459-
SAFE_DELETE( g_Playing );
460-
SAFE_DELETE( g_Mutex );
459+
Rage::safe_delete( g_Playing );
460+
Rage::safe_delete( g_Mutex );
461461
}
462462

463463
float GameSoundManager::GetFrameTimingAdjustment( float fDeltaTime )

src/GameState.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -195,13 +195,13 @@ GameState::~GameState()
195195
LUA->UnsetGlobal( "GAMESTATE" );
196196

197197
FOREACH_PlayerNumber( p )
198-
SAFE_DELETE( m_pPlayerState[p] );
198+
Rage::safe_delete( m_pPlayerState[p] );
199199
FOREACH_MultiPlayer( p )
200-
SAFE_DELETE( m_pMultiPlayerState[p] );
200+
Rage::safe_delete( m_pMultiPlayerState[p] );
201201

202-
SAFE_DELETE( m_Environment );
203-
SAFE_DELETE( g_pImpl );
204-
SAFE_DELETE( processedTiming );
202+
Rage::safe_delete( m_Environment );
203+
Rage::safe_delete( g_pImpl );
204+
Rage::safe_delete( processedTiming );
205205
}
206206

207207
PlayerNumber GameState::GetMasterPlayerNumber() const

src/GraphDisplay.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,11 @@ GraphDisplay::~GraphDisplay()
163163
{
164164
for (auto *p: m_vpSongBoundaries)
165165
{
166-
SAFE_DELETE( p );
166+
Rage::safe_delete( p );
167167
}
168168
m_vpSongBoundaries.clear();
169-
SAFE_DELETE( m_pGraphLine );
170-
SAFE_DELETE( m_pGraphBody );
169+
Rage::safe_delete( m_pGraphLine );
170+
Rage::safe_delete( m_pGraphBody );
171171
}
172172

173173
void GraphDisplay::Set( const StageStats &ss, const PlayerStageStats &pss )

src/JsonUtil.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
class RageFileBasic;
66
#include "json/value.h"
7+
#include "RageUtil.hpp"
78

89
namespace JsonUtil
910
{
@@ -186,7 +187,7 @@ namespace JsonUtil
186187
{
187188
for (auto *iter: v)
188189
{
189-
SAFE_DELETE(iter);
190+
Rage::safe_delete(iter);
190191
}
191192
v.resize(root.size());
192193
for(unsigned i=0; i<v.size(); i++)
@@ -201,7 +202,7 @@ namespace JsonUtil
201202
{
202203
for (auto *iter: v)
203204
{
204-
SAFE_DELETE(iter);
205+
Rage::safe_delete(iter);
205206
}
206207
v.resize(root.size());
207208
for(unsigned i=0; i<v.size(); i++)
@@ -217,7 +218,7 @@ namespace JsonUtil
217218
{
218219
for (auto *iter: v)
219220
{
220-
SAFE_DELETE(iter);
221+
Rage::safe_delete(iter);
221222
}
222223
v.resize(root.size());
223224
for(unsigned i=0; i<v.size(); i++)

src/LifeMeterBar.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ LifeMeterBar::LifeMeterBar()
7474

7575
LifeMeterBar::~LifeMeterBar()
7676
{
77-
SAFE_DELETE( m_pStream );
77+
Rage::safe_delete( m_pStream );
7878
}
7979

8080
void LifeMeterBar::Load( const PlayerState *pPlayerState, PlayerStageStats *pPlayerStageStats )

src/LightsManager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ LightsManager::~LightsManager()
125125
{
126126
for (auto *iter: m_vpDrivers)
127127
{
128-
SAFE_DELETE(iter);
128+
Rage::safe_delete(iter);
129129
}
130130
m_vpDrivers.clear();
131131
}

src/LocalizedString.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "global.h"
22
#include "LocalizedString.h"
33
#include "RageUtil.h"
4+
#include "RageUtil.hpp"
45
#include "SubscriptionManager.h"
56

67
static SubscriptionManager<LocalizedString> m_Subscribers;
@@ -58,12 +59,12 @@ LocalizedString::~LocalizedString()
5859
{
5960
m_Subscribers.Unsubscribe( this );
6061

61-
SAFE_DELETE( m_pImpl );
62+
Rage::safe_delete( m_pImpl );
6263
}
6364

6465
void LocalizedString::CreateImpl()
6566
{
66-
SAFE_DELETE( m_pImpl );
67+
Rage::safe_delete( m_pImpl );
6768
m_pImpl = g_pMakeLocalizedStringImpl();
6869
m_pImpl->Load( m_sGroup, m_sName );
6970
}

src/LuaManager.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "RageMath.hpp"
44
#include "LuaReference.h"
55
#include "RageUtil.h"
6+
#include "RageUtil.hpp"
67
#include "RageLog.h"
78
#include "RageFile.h"
89
#include "RageThreads.h"
@@ -635,7 +636,7 @@ LuaManager::LuaManager()
635636
LuaManager::~LuaManager()
636637
{
637638
lua_close( m_pLuaMain );
638-
SAFE_DELETE( pImpl );
639+
Rage::safe_delete( pImpl );
639640
}
640641

641642
Lua *LuaManager::Get()

src/MemoryCardManager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ MemoryCardManager::~MemoryCardManager()
301301
LUA->UnsetGlobal( "MEMCARDMAN" );
302302

303303
ASSERT( g_pWorker != nullptr );
304-
SAFE_DELETE(g_pWorker);
304+
Rage::safe_delete(g_pWorker);
305305

306306
FOREACH_PlayerNumber( pn )
307307
{

src/ModIconRow.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ ModIconRow::~ModIconRow()
3030
{
3131
for (auto *p: m_vpModIcon)
3232
{
33-
SAFE_DELETE( p );
33+
Rage::safe_delete( p );
3434
}
3535
this->RemoveAllChildren();
3636
}

src/ModelManager.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "ModelManager.h"
33
#include "arch/MovieTexture/MovieTexture.h"
44
#include "RageUtil.h"
5+
#include "RageUtil.hpp"
56
#include "RageLog.h"
67
#include "RageDisplay.h"
78

@@ -19,7 +20,7 @@ ModelManager::~ModelManager()
1920
RageModelGeometry* pGeom = i.second;
2021
if( pGeom->m_iRefCount )
2122
LOG->Trace( "MODELMAN LEAK: '%s', RefCount = %d.", i.first.c_str(), pGeom->m_iRefCount );
22-
SAFE_DELETE( pGeom );
23+
Rage::safe_delete( pGeom );
2324
}
2425
}
2526

@@ -61,7 +62,7 @@ void ModelManager::UnloadModel( RageModelGeometry *m )
6162
else
6263
{
6364
m_mapFileToGeometry.erase( i ); // remove map entry
64-
SAFE_DELETE( m ); // free the texture
65+
Rage::safe_delete( m ); // free the texture
6566
return;
6667
}
6768
}

src/MusicWheelItem.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ MusicWheelItem::~MusicWheelItem()
172172
{
173173
FOREACH_ENUM( MusicWheelItemType, i )
174174
{
175-
SAFE_DELETE(m_pText[i]);
175+
Rage::safe_delete(m_pText[i]);
176176
}
177177
delete m_pTextSectionCount;
178178
}

src/NetworkSyncManager.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,12 @@ NetworkSyncManager::~NetworkSyncManager ()
9494
//Close Connection to server nicely.
9595
if( useSMserver )
9696
NetPlayerClient->close();
97-
SAFE_DELETE( NetPlayerClient );
97+
Rage::safe_delete( NetPlayerClient );
9898

9999
if ( BroadcastReception )
100100
{
101101
BroadcastReception->close();
102-
SAFE_DELETE( BroadcastReception );
102+
Rage::safe_delete( BroadcastReception );
103103
}
104104
}
105105

@@ -913,7 +913,7 @@ unsigned long NetworkSyncManager::GetCurrentSMBuild( LoadingWindow* ld )
913913
cHeader[iHeaderLength] = '\0'; // needed to make it a valid C String
914914

915915
std::string sHTTPHeader( cHeader );
916-
SAFE_DELETE( cHeader );
916+
Rage::safe_delete( cHeader );
917917
sHTTPHeader = Rage::trim( sHTTPHeader );
918918
//LOG->Trace( sHTTPHeader.c_str() );
919919

@@ -943,11 +943,11 @@ unsigned long NetworkSyncManager::GetCurrentSMBuild( LoadingWindow* ld )
943943
} // if( svResponse[0].find("200") != std::string::npos )
944944
} // if( cBodyStart != nullptr )
945945
} // if( iBytes )
946-
SAFE_DELETE( cBuffer );
946+
Rage::safe_delete( cBuffer );
947947
} // if( socket->connect(sHost, uPort) )
948948

949949
socket->close();
950-
SAFE_DELETE( socket );
950+
Rage::safe_delete( socket );
951951

952952
if( ld )
953953
{

src/NewField.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1860,7 +1860,7 @@ NewField::~NewField()
18601860
MESSAGEMAN->Unsubscribe(this, "defective_field");
18611861
if(m_own_note_data && m_note_data != nullptr)
18621862
{
1863-
SAFE_DELETE(m_note_data);
1863+
Rage::safe_delete(m_note_data);
18641864
}
18651865
}
18661866

0 commit comments

Comments
 (0)