修复清空场景上的监听器时指针越界问题

This commit is contained in:
Nomango 2017-10-08 23:07:34 +08:00
parent 9fc1483b19
commit 552ef7a10e
2 changed files with 12 additions and 4 deletions

View File

@ -216,14 +216,18 @@ void KeyMsg::clearAllSceneListeners(Scene * scene)
// 创建迭代器
std::vector<KeyMsg*>::iterator iter;
// 循环遍历所有监听器
for (iter = s_vListeners.begin(); iter != s_vListeners.end(); iter++)
for (iter = s_vListeners.begin(); iter != s_vListeners.end();)
{
// 查找相同名称的监听器
if ((*iter)->m_pParentScene == scene)
{
// 删除该定时器
delete (*iter);
s_vListeners.erase(iter);
iter = s_vListeners.erase(iter);
}
else
{
iter++;
}
}
}

View File

@ -166,14 +166,18 @@ void MouseMsg::clearAllSceneListeners(Scene * scene)
// 创建迭代器
std::vector<MouseMsg*>::iterator iter;
// 循环遍历所有监听器
for (iter = s_vListeners.begin(); iter != s_vListeners.end(); iter++)
for (iter = s_vListeners.begin(); iter != s_vListeners.end();)
{
// 查找相同名称的监听器
if ((*iter)->m_pParentScene == scene)
{
// 删除该定时器
delete (*iter);
s_vListeners.erase(iter);
iter = s_vListeners.erase(iter);
}
else
{
iter++;
}
}
}