summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-07-21 04:01:46 +0300
committerAndrei Karas <akaras@inbox.ru>2011-07-21 04:02:07 +0300
commitdd3ac96d868e5a3e7c230832b25aacd24e03719e (patch)
tree395ddce26bd249a943c7158188fe52c48809e6a5
parent8fdaa55cfc951459b0ee079839cdf40e88baa2af (diff)
downloadmanaplus-dd3ac96d868e5a3e7c230832b25aacd24e03719e.tar.gz
manaplus-dd3ac96d868e5a3e7c230832b25aacd24e03719e.tar.bz2
manaplus-dd3ac96d868e5a3e7c230832b25aacd24e03719e.tar.xz
manaplus-dd3ac96d868e5a3e7c230832b25aacd24e03719e.zip
Fix possible crash. Move unsafe initialisations from static members.
-rw-r--r--src/client.cpp11
-rw-r--r--src/resources/beinginfo.cpp2
-rw-r--r--src/resources/spritedef.cpp3
3 files changed, 10 insertions, 6 deletions
diff --git a/src/client.cpp b/src/client.cpp
index 5a06267f2..6611d3dcf 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -659,9 +659,6 @@ Client::~Client()
ActorSprite::unload();
- delete SpriteReference::Empty;
- SpriteReference::Empty = 0;
-
ResourceManager::deleteInstance();
logger->log1("Quitting8");
@@ -1029,6 +1026,14 @@ int Client::exec()
// Read default paths file 'data/paths.xml'
paths.init("paths.xml", true);
paths.setDefaultValues(getPathsDefaults());
+ if (!SpriteReference::Empty)
+ {
+ SpriteReference::Empty = new SpriteReference(
+ paths.getStringValue("spriteErrorFile"), 0);
+ }
+
+ if (!BeingInfo::unknown)
+ BeingInfo::unknown = new BeingInfo;
Mana::Event event(EVENT_STATECHANGE);
event.setInt("newState", STATE_LOAD_DATA);
diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp
index d6865449e..6b4f57d81 100644
--- a/src/resources/beinginfo.cpp
+++ b/src/resources/beinginfo.cpp
@@ -29,7 +29,7 @@
#include "debug.h"
-BeingInfo *BeingInfo::unknown = new BeingInfo;
+BeingInfo *BeingInfo::unknown = 0;
Attack *BeingInfo::empty = new Attack(SpriteAction::ATTACK, "", "");
BeingInfo::BeingInfo():
diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp
index 79e665f4c..b6addba77 100644
--- a/src/resources/spritedef.cpp
+++ b/src/resources/spritedef.cpp
@@ -39,8 +39,7 @@
#include "debug.h"
-SpriteReference *SpriteReference::Empty = new SpriteReference(
- paths.getStringValue("spriteErrorFile"), 0);
+SpriteReference *SpriteReference::Empty = 0;
Action *SpriteDef::getAction(std::string action) const
{