gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/parser/sprite_definition...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/parser/sprite_definition...
Date: Mon, 27 Nov 2006 21:54:10 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/11/27 21:54:10

Modified files:
        .              : ChangeLog 
        server/parser  : sprite_definition.cpp 

Log message:
                * server/parser/sprite_definition.cpp (read):
                  don't choke if DEFINESPRITE tag contains more
                  SHOWFRAME then expected.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1790&r2=1.1791
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sprite_definition.cpp?cvsroot=gnash&r1=1.4&r2=1.5

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1790
retrieving revision 1.1791
diff -u -b -r1.1790 -r1.1791
--- ChangeLog   27 Nov 2006 15:57:51 -0000      1.1790
+++ ChangeLog   27 Nov 2006 21:54:10 -0000      1.1791
@@ -1,5 +1,8 @@
 2006-11-27 Sandro Santilli <address@hidden>
 
+       * server/parser/sprite_definition.cpp (read):
+         don't choke if DEFINESPRITE tag contains more
+         SHOWFRAME then expected.
        * server/: gnash.h, impl.cpp: export the movie creation
          functions taking additional argument to control
          start of the loader thread.

Index: server/parser/sprite_definition.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sprite_definition.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- server/parser/sprite_definition.cpp 29 Oct 2006 18:34:16 -0000      1.4
+++ server/parser/sprite_definition.cpp 27 Nov 2006 21:54:10 -0000      1.5
@@ -101,10 +101,34 @@
                if (tag_type == SWF::SHOWFRAME)
                {
                        // show frame tag -- advance to the next frame.
+                       ++m_loading_frame;
+
                        IF_VERBOSE_PARSE (
-                   log_parse("  show_frame (sprite)");
+                               log_parse("  show_frame "
+                                       SIZET_FMT "/" SIZET_FMT
+                                       " (sprite)",
+                                       m_loading_frame,
+                                       m_frame_count);
+                       );
+
+                       if ( m_loading_frame == m_frame_count )
+                       {
+                               // better break then sorry
+
+                               in->close_tag();
+                               while ( in->open_tag() != SWF::END )
+                               {
+                                       IF_VERBOSE_MALFORMED_SWF(
+                                       log_warning("last SHOWFRAME of a "
+                                               "DEFINESPRITE tag "
+                                               "isn't followed by an END."
+                                               " Seeking to next END tag.");
                        );
-                   m_loading_frame++;
+                                       in->close_tag();
+                               }
+
+                               break;
+                       }
                }
                else if (_tag_loaders.get(tag_type, &lf))
                {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]