[Scummvm-git-logs] scummvm master -> 873d28366b81f6906c1a96b93e5cd72cef9ec1d7
grisenti
noreply at scummvm.org
Mon Jan 9 21:50:35 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
873d28366b HPL1: fix removal of player collide scripts
Commit: 873d28366b81f6906c1a96b93e5cd72cef9ec1d7
https://github.com/scummvm/scummvm/commit/873d28366b81f6906c1a96b93e5cd72cef9ec1d7
Author: grisenti (emanuele at grisenti.net)
Date: 2023-01-09T22:50:25+01:00
Commit Message:
HPL1: fix removal of player collide scripts
the problem was caused by an incorrect fix for iterator invalidation
Changed paths:
engines/hpl1/penumbra-overture/Player.cpp
diff --git a/engines/hpl1/penumbra-overture/Player.cpp b/engines/hpl1/penumbra-overture/Player.cpp
index f939ffba2da..4f5c801ce2a 100644
--- a/engines/hpl1/penumbra-overture/Player.cpp
+++ b/engines/hpl1/penumbra-overture/Player.cpp
@@ -524,17 +524,21 @@ void cPlayer::AddCollideScript(eGameCollideScriptType aType, const tString &asFu
//-----------------------------------------------------------------------
void cPlayer::RemoveCollideScriptWithChildEntity(iGameEntity *apEntity) {
- for (auto& kv : m_mapCollideCallbacks) {
- cGameCollideScript *pCallback = kv.second;
+ tGameCollideScriptMapIt it = m_mapCollideCallbacks.begin();
+ for (; it != m_mapCollideCallbacks.end();) {
+ cGameCollideScript *pCallback = it->second;
+ tGameCollideScriptMapIt currentIt = it;
+ ++it;
if (pCallback && pCallback->mpEntity == apEntity) {
- if (mbUpdatingCollisionCallbacks)
+ if (mbUpdatingCollisionCallbacks) {
pCallback->mbDeleteMe = true;
- else
+ } else {
hplDelete(pCallback);
+ m_mapCollideCallbacks.erase(currentIt);
+ }
}
}
- m_mapCollideCallbacks.clear();
}
//-----------------------------------------------------------------------
More information about the Scummvm-git-logs
mailing list