summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/game.cpp12
-rw-r--r--src/gui/gui.cpp1
-rw-r--r--src/gui/updatewindow.cpp3
-rw-r--r--src/main.cpp2
-rw-r--r--src/resources/mapreader.cpp9
6 files changed, 22 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index a98fb4f6..3c735ab6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
last changes, and fixed the bug with npc lists I introduced earlier.
* data/items.xml: Updated the defense value of fancy hat as pointed out
by xand.
+ * src/game.cpp, src/gui/gui.cpp, src/gui/updatewindow.cpp, src/main.cpp,
+ src&resources/mapreader.cpp: Applyed biggeruniverse's patch to fix memory
+ leaks.
2005-09-18 Duane Bailey <nayryeliab@gmail.com>
diff --git a/src/game.cpp b/src/game.cpp
index 88990ee1..95c502c3 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -88,6 +88,7 @@ int fps = 0, frame = 0, current_npc = 0;
bool displayPathToMouse = false;
unsigned short startX = 0, startY = 0;
Being *autoTarget = NULL;
+Map *tiledMap = NULL;
Engine *engine = NULL;
SDL_Joystick *joypad = NULL; /**< Joypad object */
@@ -405,14 +406,17 @@ void game()
do_parse();
flush();
}
+
+ do_exit();
+}
+void do_exit()
+{
delete engine;
+ delete tiledMap;
destroyGuiWindows();
close_session();
-}
-void do_exit()
-{
if (joypad != NULL)
{
SDL_JoystickClose(joypad);
@@ -920,7 +924,7 @@ void do_input()
Direction = Being::NE;
}
- Map *tiledMap = engine->getCurrentMap();
+ tiledMap = engine->getCurrentMap();
// Allow keyboard control to interrupt an existing path
if ((xDirection != 0 || yDirection != 0) && player_node->action == Being::WALK)
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index 3642b004..6edcd1a4 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -181,6 +181,7 @@ Gui::~Gui()
}
delete mGuiFont;
+ delete speechFont;
delete mTop;
delete mImageLoader;
diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp
index e0c098f0..81ae885c 100644
--- a/src/gui/updatewindow.cpp
+++ b/src/gui/updatewindow.cpp
@@ -110,7 +110,8 @@ UpdaterWindow::~UpdaterWindow()
remove((mBasePath + "/updates/resources.txt").c_str());
remove((mBasePath + "/updates/download.temp").c_str());
- delete mCurlError;
+ delete [] mCurlError;
+ delete mScrollArea;
delete mLabel;
delete mProgressBar;
delete mCancelButton;
diff --git a/src/main.cpp b/src/main.cpp
index c176819a..0f94db54 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -302,6 +302,8 @@ void exit_engine()
config.write();
delete gui;
delete graphics;
+ delete hairset;
+ delete playerset;
// Shutdown libxml
xmlCleanupParser();
diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp
index 5e83f34f..b5b1a142 100644
--- a/src/resources/mapreader.cpp
+++ b/src/resources/mapreader.cpp
@@ -129,6 +129,7 @@ Map *MapReader::readMap(const std::string &filename)
ResourceManager *resman = ResourceManager::getInstance();
int fileSize;
void *buffer = resman->loadFile(filename, fileSize);
+ Map *map = NULL;
if (buffer == NULL)
{
@@ -175,14 +176,16 @@ Map *MapReader::readMap(const std::string &filename)
logger->log("Error: Not a map file (%s)!", filename.c_str());
return NULL;
}
-
- return readMap(node, filename);
+ else
+ {
+ map = readMap(node, filename);
+ }
xmlFreeDoc(doc);
} else {
logger->log("Error while parsing map file (%s)!", filename.c_str());
}
- return NULL;
+ return map;
}
Map* MapReader::readMap(xmlNodePtr node, const std::string &path)