From 1fc009104ee0d5737bce0f2cc2b59a6646977c27 Mon Sep 17 00:00:00 2001 From: Nicky Date: Fri, 23 Nov 2012 13:59:32 +0100 Subject: [PATCH] FIRE-5385; Make sure deleteing animation data does not cause memory corruption. --- indra/llcharacter/llkeyframemotion.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index c77615e190..2b6002b134 100644 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp @@ -2267,8 +2267,16 @@ void LLKeyframeDataCache::removeKeyframeData(const LLUUID& id) keyframe_data_map_t::iterator found_data = sKeyframeDataMap.find(id); if (found_data != sKeyframeDataMap.end()) { - delete found_data->second.mList; + // FIRE-5385; Do not delete data directory, instead move it into the garbabe queue, so it gets deleted once no one holds a reference anymore. + // Otherwise it leeads to memory corruption etc. + + // delete found_data->second.mList; + // sKeyframeDataMap.erase(found_data); + + mGarbage.push_back( found_data->second.mList ); sKeyframeDataMap.erase(found_data); + + // } tryShrinkCache();