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: Tue, 04 Sep 2007 22:15:58 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/09/04 22:15:58

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

Log message:
                * server/parser/sprite_definition.cpp (read): simplify handling 
of
                  malformed sprite definition (last SHOWFRAME not followed by 
END).
                  Fixes high CPU use and inresponsiveness while playing
                  gnashcrash.swf.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4220&r2=1.4221
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sprite_definition.cpp?cvsroot=gnash&r1=1.17&r2=1.18

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4220
retrieving revision 1.4221
diff -u -b -r1.4220 -r1.4221
--- ChangeLog   4 Sep 2007 21:50:21 -0000       1.4220
+++ ChangeLog   4 Sep 2007 22:15:56 -0000       1.4221
@@ -1,5 +1,12 @@
 2007-09-04 Sandro Santilli <address@hidden>
 
+       * server/parser/sprite_definition.cpp (read): simplify handling of
+         malformed sprite definition (last SHOWFRAME not followed by END).
+         Fixes high CPU use and inresponsiveness while playing
+         gnashcrash.swf.
+
+2007-09-04 Sandro Santilli <address@hidden>
+
        * server/character.{cpp,h}: add hasEventHandler() and queueEvent()
          methods. Implement ::unload by queuing the UNLOAD event (not its
          handlers

Index: server/parser/sprite_definition.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sprite_definition.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- server/parser/sprite_definition.cpp 1 Jul 2007 10:54:34 -0000       1.17
+++ server/parser/sprite_definition.cpp 4 Sep 2007 22:15:57 -0000       1.18
@@ -86,6 +86,8 @@
        {
                SWF::tag_type tag_type = in->open_tag();
 
+parse_tag:
+
                SWF::TagLoadersTable::loader_function lf = NULL;
 
                IF_VERBOSE_MALFORMED_SWF(
@@ -118,18 +120,17 @@
                                // better break then sorry
 
                                in->close_tag();
-                               while ( in->open_tag() != SWF::END )
+                               if ( in->open_tag() != SWF::END )
                                {
                                        IF_VERBOSE_MALFORMED_SWF(
                                        log_swferror(_("last SHOWFRAME of a "
                                                "DEFINESPRITE tag "
                                                "isn't followed by an END."
-                                               " Seeking to next END tag."));
+                                               " Stopping for safety."));
                                        );
                                        in->close_tag();
+                                       return;
                                }
-
-                               break;
                        }
                }
                else if (_tag_loaders.get(tag_type, &lf))




reply via email to

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