Skip to content

Commit 1050d61

Browse files
kholbrook1303kblaschke
authored andcommitted
Resolves #912 - Seg fault caused by m_sprites modification during iteration
1 parent f76e3e2 commit 1050d61

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/libprojectM/UserSprites/SpriteManager.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,21 @@ void SpriteManager::Draw(const Audio::FrameAudioData& audioData,
6262
uint32_t outputFramebufferObject,
6363
Sprite::PresetList presets)
6464
{
65+
std::vector<SpriteIdentifier> toDestroy;
66+
6567
for (auto& idAndSprite : m_sprites) {
6668
idAndSprite.second->Draw(audioData, renderContext, outputFramebufferObject, presets);
6769

6870
if (idAndSprite.second->Done())
6971
{
70-
Destroy(idAndSprite.first);
72+
toDestroy.push_back(idAndSprite.first);
7173
}
7274
}
75+
76+
for (auto id : toDestroy)
77+
{
78+
Destroy(id);
79+
}
7380
}
7481

7582
void SpriteManager::Destroy(SpriteIdentifier spriteIdentifier)

0 commit comments

Comments
 (0)