From ebdf2a7f6f3255caeedbdab39e8bc9b2ef6170f7 Mon Sep 17 00:00:00 2001 From: smilediver Date: Tue, 27 Aug 2024 18:28:51 +0300 Subject: [PATCH] SpriteFrameCache: fix dangling ref in `removeSpriteFramesFromTexture()` (#2106) --- core/2d/SpriteFrameCache.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/core/2d/SpriteFrameCache.cpp b/core/2d/SpriteFrameCache.cpp index 1ab64c1ab579..fa693c51ed42 100644 --- a/core/2d/SpriteFrameCache.cpp +++ b/core/2d/SpriteFrameCache.cpp @@ -259,11 +259,10 @@ void SpriteFrameCache::removeSpriteFramesFromTexture(Texture2D* texture) for (auto&& iter : getSpriteFrames()) { - auto key = iter.first; - auto* frame = findFrame(key); + auto* frame = findFrame(iter.first); if (frame && (frame->getTexture() == texture)) { - keysToRemove.emplace_back(key); + keysToRemove.emplace_back(iter.first); } } @@ -327,8 +326,8 @@ bool SpriteFrameCache::eraseFrame(std::string_view frameName) { // drop SpriteFrame const auto itFrame = _spriteFrameToSpriteSheetMap.find(frameName); - bool hint = itFrame != _spriteFrameToSpriteSheetMap.end(); - if (hint) + bool found = itFrame != _spriteFrameToSpriteSheetMap.end(); + if (found) { auto& spriteSheet = itFrame->second; spriteSheet->full = false; @@ -348,7 +347,7 @@ bool SpriteFrameCache::eraseFrame(std::string_view frameName) //} } _spriteFrames.erase(frameName); - return hint; + return found; } bool SpriteFrameCache::eraseFrames(const std::vector& frames)