summaryrefslogtreecommitdiff
path: root/src/client/GameSave.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-08-19 19:44:50 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-08-19 19:44:50 (GMT)
commitc0c30bd305cd537203fe598ecc7d0b6713abd641 (patch)
tree17505ac12932b50f7f31c8b8f552d32af5eaa2fc /src/client/GameSave.cpp
parentb1df1e164c7356e419957c88b4690f3d10c5ec7a (diff)
downloadpowder-c0c30bd305cd537203fe598ecc7d0b6713abd641.zip
powder-c0c30bd305cd537203fe598ecc7d0b6713abd641.tar.gz
Looks like calling the destructor manually is not a good idea.
Diffstat (limited to 'src/client/GameSave.cpp')
-rw-r--r--src/client/GameSave.cpp35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/client/GameSave.cpp b/src/client/GameSave.cpp
index 4b94764..97bf570 100644
--- a/src/client/GameSave.cpp
+++ b/src/client/GameSave.cpp
@@ -9,6 +9,7 @@
#include <iostream>
#include <sstream>
#include <cmath>
+#include <vector>
#include <bzlib.h>
#include "Config.h"
#include "bson/BSON.h"
@@ -97,7 +98,7 @@ GameSave::GameSave(std::vector<char> data)
catch(ParseException & e)
{
std::cout << e.what() << std::endl;
- this->~GameSave(); //Free any allocated memory
+ dealloc(); //Free any allocated memory
throw;
}
Collapse();
@@ -129,7 +130,7 @@ GameSave::GameSave(std::vector<unsigned char> data)
catch(ParseException & e)
{
std::cout << e.what() << std::endl;
- this->~GameSave(); //Free any allocated memory
+ dealloc(); //Free any allocated memory
throw;
}
Collapse();
@@ -161,7 +162,7 @@ GameSave::GameSave(char * data, int dataSize)
catch(ParseException & e)
{
std::cout << e.what() << std::endl;
- this->~GameSave(); //Free any allocated memory
+ dealloc(); //Free any allocated memory
throw;
}
//Collapse();
@@ -2007,20 +2008,46 @@ fin:
return (char*)outputData;
}
-GameSave::~GameSave()
+void GameSave::dealloc()
{
if(particles)
+ {
delete[] particles;
+ particles = NULL;
+ }
if(blockMap)
+ {
delete[] blockMap;
+ blockMap = NULL;
+ }
if(blockMapPtr)
+ {
delete[] blockMapPtr;
+ blockMapPtr = NULL;
+ }
if(fanVelX)
+ {
delete[] fanVelX;
+ fanVelX = NULL;
+ }
if(fanVelXPtr)
+ {
delete[] fanVelXPtr;
+ fanVelXPtr = NULL;
+ }
if(fanVelY)
+ {
delete[] fanVelY;
+ fanVelY = NULL;
+ }
if(fanVelYPtr)
+ {
delete[] fanVelYPtr;
+ fanVelYPtr = NULL;
+ }
+}
+
+GameSave::~GameSave()
+{
+
}