[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp
From: |
Zou Lunkai |
Subject: |
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp |
Date: |
Thu, 07 Jun 2007 07:28:24 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Zou Lunkai <zoulunkai> 07/06/07 07:28:24
Modified files:
. : ChangeLog
server : sprite_instance.cpp
Log message:
avoid using possibly invalidated interators
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3476&r2=1.3477
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.283&r2=1.284
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3476
retrieving revision 1.3477
diff -u -b -r1.3476 -r1.3477
--- ChangeLog 6 Jun 2007 17:49:01 -0000 1.3476
+++ ChangeLog 7 Jun 2007 07:28:23 -0000 1.3477
@@ -1,3 +1,8 @@
+2007-06-07 Zou Lunkai <address@hidden>
+
+ * server/sprite_instance.cpp: improved call_frame_actions(),
+ avoid using possibly invalidated interators.
+
2007-06-06 Sandro Santilli <address@hidden>
* server/swf/tag_loader.cpp (fixme_loader): warn only once for each
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.283
retrieving revision 1.284
diff -u -b -r1.283 -r1.284
--- server/sprite_instance.cpp 28 May 2007 09:35:34 -0000 1.283
+++ server/sprite_instance.cpp 7 Jun 2007 07:28:23 -0000 1.284
@@ -1981,20 +1981,18 @@
}
}
- // Execute any new actions triggered by the tag,
- // leaving existing actions to be executed.
+ //
+ // exetract target frame actions and execute them
+ //
ActionList::iterator it = m_action_list.begin();
- for(size_t i =0; i<original_size; i++)
- {
- it++;
- }
- ActionList::iterator previous_end = it;
- while (it != m_action_list.end())
- {
- execute_action(*(*it));
- ++it;
- }
- m_action_list.erase(previous_end, m_action_list.end());
+ for(size_t i =0; i<original_size; i++) { it++; }
+ ActionList::iterator original_end = it;
+
+ ActionList frame_actions(original_end, m_action_list.end());
+ // erase the target frame actions from the orignal list
+ m_action_list.erase(original_end, m_action_list.end());
+ // Note: this function may invalidate the iterators above
+ execute_actions(frame_actions);
assert(m_action_list.size() == original_size);
}
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp,
Zou Lunkai <=