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


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp
Date: Wed, 31 Oct 2007 08:28:41 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/10/31 08:28:41

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

Log message:
                * server/vm/ASHandlers.cpp (ActionNewAdd): don't assume
                  stack element references are valid after calls to 
to_primitive.
                  Fixes bug #21482.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4749&r2=1.4750
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.146&r2=1.147

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4749
retrieving revision 1.4750
diff -u -b -r1.4749 -r1.4750
--- ChangeLog   30 Oct 2007 18:55:40 -0000      1.4749
+++ ChangeLog   31 Oct 2007 08:28:40 -0000      1.4750
@@ -1,3 +1,9 @@
+2007-10-31 Sandro Santilli <address@hidden>
+
+       * server/vm/ASHandlers.cpp (ActionNewAdd): don't assume
+         stack element references are valid after calls to to_primitive.
+         Fixes bug #21482.
+
 2007-10-30 Sandro Santilli <address@hidden>
 
        * lots of files: assert(0) -> abort()

Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -b -r1.146 -r1.147
--- server/vm/ASHandlers.cpp    29 Oct 2007 21:07:34 -0000      1.146
+++ server/vm/ASHandlers.cpp    31 Oct 2007 08:28:41 -0000      1.147
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-/* $Id: ASHandlers.cpp,v 1.146 2007/10/29 21:07:34 cmusick Exp $ */
+/* $Id: ASHandlers.cpp,v 1.147 2007/10/31 08:28:41 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2810,13 +2810,20 @@
 
     thread.ensureStack(2);
 
-    as_value& v1_in = env.top(0);
-    as_value& v2_in = env.top(1);
+#ifndef NDEBUG
+    size_t stackSize = env.stack_size();
+#endif
+
+    as_value v1 = env.top(0).to_primitive(env);
+    as_value v2 = env.top(1).to_primitive(env);
 
-    as_value v1 = v1_in.to_primitive(env);
-    as_value v2 = v2_in.to_primitive(env);
+    assert( stackSize == env.stack_size() );
 
-    //log_msg(_("ActionNewAdd(%s, %s) [prim %s, %s] called"), 
v1_in.to_debug_string().c_str(), v2_in.to_debug_string().c_str(), 
v1.to_debug_string().c_str(), v2.to_debug_string().c_str());
+    //log_debug(_("ActionNewAdd(%s, %s) [prim %s, %s] called"),
+    //         env.top(0).to_debug_string().c_str(),
+    //         v2_in.to_debug_string().c_str(),
+    //         env.top(1).to_debug_string().c_str(),
+    //         v2.to_debug_string().c_str());
 
 
     if (v1.is_string() || v2.is_string() )
@@ -2824,7 +2831,7 @@
        int version = env.get_version();
         v2.convert_to_string_versioned(version, &env);
         v2.string_concat(v1.to_string_versioned(version, &env));
-       v2_in = v2; // modify env.top(1)
+       env.top(1) = v2;
     }
     else
     {
@@ -2836,7 +2843,7 @@
 
         v2.set_double(v2num + v1num); 
 
-       v2_in = v2; // modify env.top(1)
+       env.top(1) = v2;
     }
     env.drop(1);
 }




reply via email to

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