gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/timers.cpp testsuite/mis...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/timers.cpp testsuite/mis...
Date: Wed, 07 May 2008 13:32:00 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/05/07 13:32:00

Modified files:
        .              : ChangeLog 
        server         : timers.cpp 
        testsuite/misc-ming.all: intervalTest.as 

Log message:
                * server/timers.cpp (execute): compute super.
                * testsuite/misc-ming.all/intervalTest.as: successes.
        
        NOTE: we really need a central place for methods calling, or we'll keep
              breaking layering. A virtual as_object::callMethod(..) should do.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6541&r2=1.6542
http://cvs.savannah.gnu.org/viewcvs/gnash/server/timers.cpp?cvsroot=gnash&r1=1.48&r2=1.49
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/intervalTest.as?cvsroot=gnash&r1=1.8&r2=1.9

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6541
retrieving revision 1.6542
diff -u -b -r1.6541 -r1.6542
--- ChangeLog   7 May 2008 13:06:20 -0000       1.6541
+++ ChangeLog   7 May 2008 13:31:59 -0000       1.6542
@@ -1,5 +1,10 @@
 2008-05-07 Sandro Santilli <address@hidden>
 
+       * server/timers.cpp (execute): compute super.
+       * testsuite/misc-ming.all/intervalTest.as: successes.
+
+2008-05-07 Sandro Santilli <address@hidden>
+
        * testsuite/misc-ming.all/: intervalTest.as, intervalTestRunner.cpp:
          Add test for 'super' in setInterval-set method call (comment #3
          in bug #23130).

Index: server/timers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/timers.cpp,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- server/timers.cpp   5 Mar 2008 03:56:00 -0000       1.48
+++ server/timers.cpp   7 May 2008 13:32:00 -0000       1.49
@@ -128,18 +128,31 @@
 
     as_value timer_method;
 
+    as_object* super = NULL;
+
     if ( _function.get() )
     {
         timer_method.set_as_function(_function.get());
     }
     else
     {
-        as_value tmp;
-        if (!_object->get_member(VM::get().getStringTable().find(_methodName), 
&tmp) )
+       VM& vm = VM::get();
+       string_table::key k = vm.getStringTable().find(_methodName);
+       as_object* owner = NULL;
+       Property* p = _object->findProperty(k, 0, &owner);
+       if ( ! p )
         {
-            //log_debug("Can't find interval method %s on object %p (%s)", 
_methodName.c_str(), (void*)_object.get(), _object->get_text_value().c_str());
+            //log_debug("member %s of object %p (interval method) can't be 
found",
+            //   _methodName, (void*)_object.get());
             return;
         }
+       if ( _object->isSuper() )
+       {
+               log_unimpl("Getting super from a super in inteval timers");
+       }
+       super = owner->get_super();
+
+        as_value tmp = p->getValue(*_object); // TODO: check visibility flags ?
         as_function* f = tmp.to_as_function();
         if ( ! f )
         {
@@ -163,7 +176,7 @@
     size_t firstArgBottomIndex = env.stack_size()-1; 
 
     as_value val = call_method(timer_method, &env, _object.get(),
-                   _args.size(), firstArgBottomIndex);
+                   _args.size(), firstArgBottomIndex, super);
 
 }
 

Index: testsuite/misc-ming.all/intervalTest.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/intervalTest.as,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- testsuite/misc-ming.all/intervalTest.as     7 May 2008 13:06:21 -0000       
1.8
+++ testsuite/misc-ming.all/intervalTest.as     7 May 2008 13:32:00 -0000       
1.9
@@ -40,8 +40,8 @@
                        A.prototype.test = function() { return 'Atest'; };
                        B = function() {}; B.prototype = new A;
                        B.prototype.test = function() {
-                               xcheck_equals(super.test(), 'Atest');
-                               xcheck_equals(super.name, 'A');
+                               check_equals(super.test(), 'Atest');
+                               check_equals(super.name, 'A');
                                totals(18, __FILE__ + ":" + __LINE__ );
                                test_completed = 1;
                                clearInterval(method_interval);




reply via email to

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