[Top][All Lists]
[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);
}