gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server...


From: Benjamin Wolsey
Subject: [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp server...
Date: Fri, 23 May 2008 21:15:18 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Benjamin Wolsey <bwy>   08/05/23 21:15:17

Modified files:
        .              : ChangeLog 
        server/vm      : ASHandlers.cpp ActionExec.cpp 

Log message:
                * server/vm/ActionExec.cpp: clean up using directives.
                * server/vm/ASHandlers.cpp: check that an object exists and 
that it's
                  a proper object before enumerating it. Fixes bug #23331.
        
                The second change will be backported to 0.8.3.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6695&r2=1.6696
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.242&r2=1.243
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ActionExec.cpp?cvsroot=gnash&r1=1.75&r2=1.76

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6695
retrieving revision 1.6696
diff -u -b -r1.6695 -r1.6696
--- ChangeLog   23 May 2008 18:44:19 -0000      1.6695
+++ ChangeLog   23 May 2008 21:15:15 -0000      1.6696
@@ -1,3 +1,9 @@
+2008-05-23 Benjamin Wolsey <address@hidden>
+
+       * server/vm/ActionExec.cpp: clean up using directives.
+       * server/vm/ASHandlers.cpp: check that an object exists and that it's
+         a proper object before enumerating it. Fixes bug #23331.
+
 2008-05-23 Russ Nelson <address@hidden>
 
        * configure.ac: make the user's life a little easier by telling them

Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.242
retrieving revision 1.243
diff -u -b -r1.242 -r1.243
--- server/vm/ASHandlers.cpp    23 May 2008 12:01:10 -0000      1.242
+++ server/vm/ASHandlers.cpp    23 May 2008 21:15:17 -0000      1.243
@@ -3094,7 +3094,8 @@
 
     env.top(0).set_null();
 
-    if ( ! variable.is_object() )
+    const boost::intrusive_ptr<as_object> obj = variable.to_object();
+    if ( !obj || !variable.is_object() )
     {
         IF_VERBOSE_ASCODING_ERRORS(
         log_aserror(_("Top of stack doesn't evaluate to an object (%s) at "
@@ -3104,8 +3105,6 @@
         return;
     }
 
-    const boost::intrusive_ptr<as_object> obj = variable.to_object();
-
     enumerateObject(env, *obj);
 }
 
@@ -3757,18 +3756,16 @@
     // as we copied that as_value.
     env.top(0).set_null();
 
-    if ( ! obj_val.is_object() )
+    const boost::intrusive_ptr<as_object> obj = obj_val.to_object();
+    if ( !obj || !obj_val.is_object() )
     {
         IF_VERBOSE_ASCODING_ERRORS(
         log_aserror(_("Top of stack not an object %s at ActionEnum2 "
-            " execution"),
-            obj_val);
+            " execution"), obj_val);
         );
         return;
     }
 
-    boost::intrusive_ptr<as_object> obj = obj_val.to_object();
-
     enumerateObject(env, *obj);
 
 }

Index: server/vm/ActionExec.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ActionExec.cpp,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -b -r1.75 -r1.76
--- server/vm/ActionExec.cpp    21 May 2008 13:24:06 -0000      1.75
+++ server/vm/ActionExec.cpp    23 May 2008 21:15:17 -0000      1.76
@@ -49,19 +49,13 @@
 // too much information for my tastes. I really want just
 // to see how stack changes while executing actions...
 // --strk Fri Jun 30 02:28:46 CEST 2006
-#define DEBUG_STACK 1
+# define DEBUG_STACK 1
 
 // Max number of stack item to dump. 0 for unlimited.
-#define STACK_DUMP_LIMIT 32
+# define STACK_DUMP_LIMIT 32
 
 #endif
 
-using namespace gnash;
-using namespace SWF;
-using std::string;
-using std::endl;
-using std::stringstream;
-
 
 namespace gnash {
 
@@ -155,7 +149,7 @@
     // Do not execute if scripts are disabled
     if ( VM::get().getRoot().scriptsDisabled() ) return;
 
-    static const SWFHandlers& ash = SWFHandlers::instance();
+    static const SWF::SWFHandlers& ash = SWF::SWFHandlers::instance();
                
     _original_target = env.get_target();
 
@@ -168,12 +162,12 @@
                log_action(_("at ActionExec operator() start, pc=%d"
                           ", stop_pc=%d, code.size=%d."),
                            pc, stop_pc, code.size());
-               stringstream ss;
+               std::stringstream ss;
                env.dump_stack(ss, STACK_DUMP_LIMIT);
                env.dump_global_registers(ss);
                env.dump_local_registers(ss);
                env.dump_local_variables(ss);
-               log_action("%s", ss.str().c_str());
+               log_action("%s", ss.str());
        );
 #endif
 
@@ -305,8 +299,7 @@
        size_t oldPc = pc;
 
        IF_VERBOSE_ACTION (
-               // FIXME, avoid direct dbglogfile access, use log_action
-               log_action("PC:%d - EX: %s", pc, code.disasm(pc).c_str());
+               log_action("PC:%d - EX: %s", pc, code.disasm(pc));
        );
 
        // Set default next_pc offset, control flow action handlers
@@ -343,7 +336,7 @@
                break;
        }
 
-       ash.execute((action_type)action_id, *this);
+       ash.execute(static_cast<SWF::action_type>(action_id), *this);
 
 #if 1 // See bugs: #20974, #21069, #20996.
 
@@ -367,7 +360,7 @@
                ss << "Discarding " << stop_pc-next_pc
                        << " bytes of remaining opcodes: " << std::endl;
                dumpActions(next_pc, stop_pc, ss);
-               log_debug("%s", ss.str().c_str());
+               log_debug("%s", ss.str());
                break;
        }
 #endif
@@ -384,12 +377,12 @@
 #if DEBUG_STACK
        IF_VERBOSE_ACTION (
                log_action(_("After execution: PC %d, next PC %d, stack 
follows"), pc, next_pc);
-               stringstream ss;
+               std::stringstream ss;
                env.dump_stack(ss, STACK_DUMP_LIMIT);
                env.dump_global_registers(ss);
                env.dump_local_registers(ss);
                env.dump_local_variables(ss);
-               log_action("%s", ss.str().c_str());
+               log_action("%s", ss.str());
        );
 #endif
 




reply via email to

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