Просмотр исходного кода

Fixed possible issue with script event lists being indexed out of range if an event was unregistered during the invocation of another script event.

Steve Grenier 12 лет назад
Родитель
Сommit
3da88bcaf3
1 измененных файлов с 9 добавлено и 9 удалено
  1. 9 9
      gameplay/src/ScriptController.cpp

+ 9 - 9
gameplay/src/ScriptController.cpp

@@ -735,7 +735,7 @@ void ScriptController::initialize()
 void ScriptController::initializeGame()
 void ScriptController::initializeGame()
 {
 {
     std::vector<std::string>& list = _callbacks[INITIALIZE];
     std::vector<std::string>& list = _callbacks[INITIALIZE];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str());
         executeFunction<void>(list[i].c_str());
 }
 }
 
 
@@ -757,7 +757,7 @@ void ScriptController::finalizeGame()
         _callbacks[i].clear();
         _callbacks[i].clear();
 
 
 	// Fire script finalize callbacks
 	// Fire script finalize callbacks
-    for (size_t i = 0, count = finalizeCallbacks.size(); i < count; ++i)
+    for (size_t i = 0; i < finalizeCallbacks.size(); ++i)
         executeFunction<void>(finalizeCallbacks[i].c_str());
         executeFunction<void>(finalizeCallbacks[i].c_str());
 
 
     // Perform a full garbage collection cycle.
     // Perform a full garbage collection cycle.
@@ -770,42 +770,42 @@ void ScriptController::finalizeGame()
 void ScriptController::update(float elapsedTime)
 void ScriptController::update(float elapsedTime)
 {
 {
     std::vector<std::string>& list = _callbacks[UPDATE];
     std::vector<std::string>& list = _callbacks[UPDATE];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str(), "f", elapsedTime);
         executeFunction<void>(list[i].c_str(), "f", elapsedTime);
 }
 }
 
 
 void ScriptController::render(float elapsedTime)
 void ScriptController::render(float elapsedTime)
 {
 {
     std::vector<std::string>& list = _callbacks[RENDER];
     std::vector<std::string>& list = _callbacks[RENDER];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str(), "f", elapsedTime);
         executeFunction<void>(list[i].c_str(), "f", elapsedTime);
 }
 }
 
 
 void ScriptController::resizeEvent(unsigned int width, unsigned int height)
 void ScriptController::resizeEvent(unsigned int width, unsigned int height)
 {
 {
     std::vector<std::string>& list = _callbacks[RESIZE_EVENT];
     std::vector<std::string>& list = _callbacks[RESIZE_EVENT];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str(), "uiui", width, height);
         executeFunction<void>(list[i].c_str(), "uiui", width, height);
 }
 }
 
 
 void ScriptController::keyEvent(Keyboard::KeyEvent evt, int key)
 void ScriptController::keyEvent(Keyboard::KeyEvent evt, int key)
 {
 {
     std::vector<std::string>& list = _callbacks[KEY_EVENT];
     std::vector<std::string>& list = _callbacks[KEY_EVENT];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str(), "[Keyboard::KeyEvent][Keyboard::Key]", evt, key);
         executeFunction<void>(list[i].c_str(), "[Keyboard::KeyEvent][Keyboard::Key]", evt, key);
 }
 }
 
 
 void ScriptController::touchEvent(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex)
 void ScriptController::touchEvent(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex)
 {
 {
     std::vector<std::string>& list = _callbacks[TOUCH_EVENT];
     std::vector<std::string>& list = _callbacks[TOUCH_EVENT];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str(), "[Touch::TouchEvent]iiui", evt, x, y, contactIndex);
         executeFunction<void>(list[i].c_str(), "[Touch::TouchEvent]iiui", evt, x, y, contactIndex);
 }
 }
 
 
 bool ScriptController::mouseEvent(Mouse::MouseEvent evt, int x, int y, int wheelDelta)
 bool ScriptController::mouseEvent(Mouse::MouseEvent evt, int x, int y, int wheelDelta)
 {
 {
     std::vector<std::string>& list = _callbacks[MOUSE_EVENT];
     std::vector<std::string>& list = _callbacks[MOUSE_EVENT];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
     {
     {
         if (executeFunction<bool>(list[i].c_str(), "[Mouse::MouseEvent]iii", evt, x, y, wheelDelta))
         if (executeFunction<bool>(list[i].c_str(), "[Mouse::MouseEvent]iii", evt, x, y, wheelDelta))
             return true;
             return true;
@@ -816,7 +816,7 @@ bool ScriptController::mouseEvent(Mouse::MouseEvent evt, int x, int y, int wheel
 void ScriptController::gamepadEvent(Gamepad::GamepadEvent evt, Gamepad* gamepad, unsigned int analogIndex)
 void ScriptController::gamepadEvent(Gamepad::GamepadEvent evt, Gamepad* gamepad, unsigned int analogIndex)
 {
 {
     std::vector<std::string>& list = _callbacks[GAMEPAD_EVENT];
     std::vector<std::string>& list = _callbacks[GAMEPAD_EVENT];
-    for (size_t i = 0, count = list.size(); i < count; ++i)
+    for (size_t i = 0; i < list.size(); ++i)
         executeFunction<void>(list[i].c_str(), "[Gamepad::GamepadEvent]<Gamepad>", evt, gamepad);
         executeFunction<void>(list[i].c_str(), "[Gamepad::GamepadEvent]<Gamepad>", evt, gamepad);
 }
 }