gnash-commit
[Top][All Lists]
Advanced

[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




reply via email to

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