[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/parser/action_buffer.cpp...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/parser/action_buffer.cpp... |
Date: |
Thu, 04 Oct 2007 22:05:01 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/10/04 22:05:01
Modified files:
. : ChangeLog
server/parser : action_buffer.cpp
testsuite/swfdec: PASSING
Log message:
* server/parser/action_buffer.cpp (read): don't give up if an
END
opcode is not found. You can find real-world cases for a
missing
END in swfdec testsuite, tipically generated by swfmill.
* testsuite/swfdec/PASSING: 2 more successes.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4527&r2=1.4528
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/action_buffer.cpp?cvsroot=gnash&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.34&r2=1.35
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4527
retrieving revision 1.4528
diff -u -b -r1.4527 -r1.4528
--- ChangeLog 4 Oct 2007 16:12:42 -0000 1.4527
+++ ChangeLog 4 Oct 2007 22:05:00 -0000 1.4528
@@ -1,3 +1,10 @@
+2007-10-05 Sandro Santilli <address@hidden>
+
+ * server/parser/action_buffer.cpp (read): don't give up if an END
+ opcode is not found. You can find real-world cases for a missing
+ END in swfdec testsuite, tipically generated by swfmill.
+ * testsuite/swfdec/PASSING: 2 more successes.
+
2007-10-04 Aleksey Lim <address@hidden>
* libmedia/MediaParser.h: wrap avcodec.h include in extern "C"
Index: server/parser/action_buffer.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/action_buffer.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- server/parser/action_buffer.cpp 27 Sep 2007 06:46:32 -0000 1.23
+++ server/parser/action_buffer.cpp 4 Oct 2007 22:05:00 -0000 1.24
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: action_buffer.cpp,v 1.23 2007/09/27 06:46:32 strk Exp $ */
+/* $Id: action_buffer.cpp,v 1.24 2007/10/04 22:05:00 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -59,24 +59,32 @@
void
action_buffer::read(stream* in)
{
+ // NOTE:
+ // This method is called for different tags, not only DOACTION.
+ // For DoAction we have to read all the tag, in which case we
+ // can optimize the read to a single memcpy.
+ // For other tags (like button actions) we have to seek for an END
+ // tag.
+ // TODO: implement two different 'read' flavors to make parsing more
+ // performant and SWF consistency checking more effective
+
// Read action bytes.
- for (;;) {
+ unsigned long endPos = in->get_tag_end_position();
+ while ( in->get_position() < endPos )
+ {
#if 0
size_t instruction_start = m_buffer.size();
size_t pc = m_buffer.size();
#endif
- in->ensureBytes(1); // action_id
uint8_t action_id = in->read_u8();
m_buffer.push_back(action_id);
if (action_id & 0x80) {
// Action contains extra data. Read it.
- in->ensureBytes(2); // action length
uint16_t length = in->read_u16();
m_buffer.push_back(length & 0x0FF);
m_buffer.push_back((length >> 8) & 0x0FF);
- in->ensureBytes(length); // action actions
for (uint16_t i = 0; i < length; i++) {
uint8_t b = in->read_u8(); // bytes ensured outside loop
m_buffer.push_back(b);
Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- testsuite/swfdec/PASSING 2 Oct 2007 15:44:51 -0000 1.34
+++ testsuite/swfdec/PASSING 4 Oct 2007 22:05:01 -0000 1.35
@@ -259,3 +259,5 @@
stack-overflow-5.swf
stack-overflow-6.swf
stack-overflow-7.swf
+definefunction2-arguments-registers.swf
+definefunction2-arguments.swf
- [Gnash-commit] gnash ChangeLog server/parser/action_buffer.cpp...,
Sandro Santilli <=