[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/swf_function.cpp testsui...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/swf_function.cpp testsui... |
Date: |
Fri, 28 Mar 2008 17:16:12 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/03/28 17:16:12
Modified files:
. : ChangeLog
server : swf_function.cpp
testsuite/swfdec: PASSING
Log message:
In function2 calls, esplicit args override implicit ones.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6062&r2=1.6063
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf_function.cpp?cvsroot=gnash&r1=1.51&r2=1.52
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.107&r2=1.108
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6062
retrieving revision 1.6063
diff -u -b -r1.6062 -r1.6063
--- ChangeLog 28 Mar 2008 16:37:44 -0000 1.6062
+++ ChangeLog 28 Mar 2008 17:16:10 -0000 1.6063
@@ -1,5 +1,11 @@
2008-03-28 Sandro Santilli <address@hidden>
+ * server/swf_function.cpp (call operator): esplicit args override
+ implicit ones.
+ * testsuite/swfdec/PASSING: definefunction2-overwrite.swf succeeds.
+
+2008-03-28 Sandro Santilli <address@hidden>
+
* server/asobj/Object.cpp: add Object.toLocaleString.
* testsuite/actionscript.all/: Date.as, Object.as:
toLocaleString tests pass.
Index: server/swf_function.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf_function.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- server/swf_function.cpp 15 Mar 2008 18:37:08 -0000 1.51
+++ server/swf_function.cpp 28 Mar 2008 17:16:11 -0000 1.52
@@ -164,40 +164,6 @@
// Create local registers.
our_env->add_local_registers(m_local_register_count);
- // Handle the explicit args.
- for (size_t i=0, n=m_args.size(); i<n; ++i)
- {
- if ( ! m_args[i].m_register ) // not a register,
declare as local
- {
- if ( i < fn.nargs )
- {
- // Conventional arg passing: create a
local var.
- our_env->add_local(m_args[i].m_name,
fn.arg(i));
- }
- else
- {
- // Still declare named arguments, even
if
- // they are not passed from caller
- // See bug #22203
-
our_env->declare_local(m_args[i].m_name);
- }
- }
- else
- {
- if ( i < fn.nargs )
- {
- // Pass argument into a register.
- int reg = m_args[i].m_register;
- our_env->local_register(reg) =
fn.arg(i);
- }
- else
- {
- // The argument was not passed, no
- // need to setup a register I guess..
- }
- }
- }
-
// Handle the implicit args.
// @@ why start at 1 ? Note that starting at 0 makes
// intro.swf movie fail to play correctly.
@@ -288,6 +254,43 @@
our_env->local_register(current_reg).set_as_object(global);
current_reg++;
}
+
+ // Handle the explicit args.
+ // This must be done after implicit ones,
+ // as the explicit override the implicits: see
swfdec/definefunction2-override
+ for (size_t i=0, n=m_args.size(); i<n; ++i)
+ {
+ if ( ! m_args[i].m_register ) // not a register,
declare as local
+ {
+ if ( i < fn.nargs )
+ {
+ // Conventional arg passing: create a
local var.
+ our_env->add_local(m_args[i].m_name,
fn.arg(i));
+ }
+ else
+ {
+ // Still declare named arguments, even
if
+ // they are not passed from caller
+ // See bug #22203
+
our_env->declare_local(m_args[i].m_name);
+ }
+ }
+ else
+ {
+ if ( i < fn.nargs )
+ {
+ // Pass argument into a register.
+ int reg = m_args[i].m_register;
+ our_env->local_register(reg) =
fn.arg(i);
+ }
+ else
+ {
+ // The argument was not passed, no
+ // need to setup a register I guess..
+ }
+ }
+ }
+
}
as_value result;
Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -b -r1.107 -r1.108
--- testsuite/swfdec/PASSING 19 Mar 2008 18:27:49 -0000 1.107
+++ testsuite/swfdec/PASSING 28 Mar 2008 17:16:12 -0000 1.108
@@ -148,6 +148,7 @@
dangling-print-8.swf:3a8af45c5348dd5da7417b75d7aef8c6
definefunction2-arguments-registers.swf:9cba221db1a793e345f727c9ec62a21b
definefunction2-arguments.swf:054308da5bad0209a132f8d1be2f7240
+definefunction2-overwrite.swf:079d366e379196272b8b2327e068f336
definefunction2-registers-5.swf:397a4a09822b5803e59c362a0e8aa1f2
definefunction2-registers-6.swf:336308a723b8d3f73286b4c206b78b99
definefunction2-registers-7.swf:3f3beedf7c672e52718db68e8bae0a48