summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2008-12-08 21:54:38 +0100
committerBjørn Lindeijer <bjorn@lindeijer.nl>2008-12-08 22:01:19 +0100
commitb8cca9c48d6ea5a2372e10bbe2a75ae95917db42 (patch)
tree7a1b6eea0054e17316f64f82b0d3febe5e8cd140 /src
parent337fdc49fc9fd5c041568c30327a9aab66e6080d (diff)
downloadmana-b8cca9c48d6ea5a2372e10bbe2a75ae95917db42.tar.gz
mana-b8cca9c48d6ea5a2372e10bbe2a75ae95917db42.tar.bz2
mana-b8cca9c48d6ea5a2372e10bbe2a75ae95917db42.tar.xz
mana-b8cca9c48d6ea5a2372e10bbe2a75ae95917db42.zip
An attempt to fix the crashes related to particles
The player character is never deleted, and hence might have particles still active when the map changes. These particles are deleted on map change, but when the player character was moved, it was trying to mark these deleted particles for deletion, writing to unallocated memory. The marking for deletion by the player character now happens before the particles are deleted. Signed-off-by: Bjørn Lindeijer <bjorn@lindeijer.nl>
Diffstat (limited to 'src')
-rw-r--r--src/engine.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/engine.cpp b/src/engine.cpp
index 2edc6550..709fcec4 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -67,10 +67,15 @@ Engine::~Engine()
void Engine::changeMap(const std::string &mapPath)
{
- // Clean up floor items
+ // Clean up floor items, beings and particles
floorItemManager->clear();
-
beingManager->clear();
+
+ // Unset the map of the player so that its particles are cleared before
+ // being deleted in the next step
+ if (player_node)
+ player_node->setMap(0);
+
particleEngine->clear();
// Store full map path in global var