From b486f12a5f1126457f375a5c7170164d7729cce5 Mon Sep 17 00:00:00 2001 From: Nicolay Korslund Date: Mon, 30 Aug 2010 23:51:47 +0200 Subject: [PATCH] Fixed crash bug in sndmanager.cpp --- mangle | 2 +- sound/sndmanager.cpp | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mangle b/mangle index 932465442b..3324f6494c 160000 --- a/mangle +++ b/mangle @@ -1 +1 @@ -Subproject commit 932465442bd97c3bcb3a8630414c16bdd887fa9f +Subproject commit 3324f6494c021e3dc69cd76ace5ff25a52e4bcce diff --git a/sound/sndmanager.cpp b/sound/sndmanager.cpp index fe5ad80915..10a503bf4e 100644 --- a/sound/sndmanager.cpp +++ b/sound/sndmanager.cpp @@ -149,15 +149,26 @@ public: // Update all sounds void updateAll() { - for(ManagedSound *s = list.getHead(); s != NULL; s=s->next) - s->update(); + ManagedSound *s = list.getHead(); + while(s) + { + ManagedSound *cur = s; + // Propagate first, since update() may delete object + s = s->next; + cur->update(); + } } // Detach and unlock all sounds void detachAll() { - for(ManagedSound *s = list.getHead(); s != NULL; s=s->next) - s->detach(); + ManagedSound *s = list.getHead(); + while(s) + { + ManagedSound *cur = s; + s = s->next; + cur->detach(); + } } };