gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/as_function.cpp server/a...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_function.cpp server/a...
Date: Thu, 19 Jun 2008 10:51:45 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/06/19 10:51:44

Modified files:
        .              : ChangeLog 
        server         : as_function.cpp as_object.cpp as_object.h 
                         sprite_instance.cpp timers.cpp 
        server/asobj   : AsBroadcaster.cpp 
        server/vm      : ASHandlers.cpp 
        testsuite/actionscript.all: Inheritance.as 
        testsuite/swfdec: PASSING 

Log message:
        * server/as_object.{cpp,h}: change get_super semantic again,
          now to be called against the object on which a method
          is being called, with an optional method name too.
        * server/as_function.cpp, server/sprite_instance.cpp,
          server/timers.cpp, server/asobj/AsBroadcaster.cpp,
          server/vm/ASHandlers.cpp: simplify extraction of 'super'
          object by delegating all to the virtual as_object::get_super.
        * testsuite/swfdec/PASSING: super-missing-{7,8}.swf
        * testsuite/actionscript.all/Inheritance.as: no more failures here.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6976&r2=1.6977
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_function.cpp?cvsroot=gnash&r1=1.63&r2=1.64
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.123&r2=1.124
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.h?cvsroot=gnash&r1=1.112&r2=1.113
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.553&r2=1.554
http://cvs.savannah.gnu.org/viewcvs/gnash/server/timers.cpp?cvsroot=gnash&r1=1.53&r2=1.54
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/AsBroadcaster.cpp?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.254&r2=1.255
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Inheritance.as?cvsroot=gnash&r1=1.63&r2=1.64
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.148&r2=1.149

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6976
retrieving revision 1.6977
diff -u -b -r1.6976 -r1.6977
--- ChangeLog   18 Jun 2008 22:35:02 -0000      1.6976
+++ ChangeLog   19 Jun 2008 10:51:41 -0000      1.6977
@@ -1,5 +1,17 @@
 2008-06-19 Sandro Santilli <address@hidden>
 
+       * server/as_object.{cpp,h}: change get_super semantic again,
+         now to be called against the object on which a method
+         is being called, with an optional method name too.
+       * server/as_function.cpp, server/sprite_instance.cpp,
+         server/timers.cpp, server/asobj/AsBroadcaster.cpp,
+         server/vm/ASHandlers.cpp: simplify extraction of 'super'
+         object by delegating all to the virtual as_object::get_super.
+       * testsuite/swfdec/PASSING: super-missing-{7,8}.swf
+       * testsuite/actionscript.all/Inheritance.as: no more failures here.
+
+2008-06-19 Sandro Santilli <address@hidden>
+
        * testsuite/actionscript.all/Inheritance.as: run the egg/chicken
          test after totals are printed, so we get some info from the
          pp before it hangs.

Index: server/as_function.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_function.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- server/as_function.cpp      2 Jun 2008 09:52:52 -0000       1.63
+++ server/as_function.cpp      19 Jun 2008 10:51:42 -0000      1.64
@@ -330,7 +330,7 @@
                        as_object* proto = this_ptr->get_prototype().get();
                        if ( proto )
                        {
-                               new_fn_call.super = proto->get_super();
+                                new_fn_call.super = this_ptr->get_super();
                        }
                        else
                        {
@@ -435,10 +435,10 @@
                        newobj->init_member(NSV::PROP_CONSTRUCTOR, 
as_value(this), flags);
                }
 
-               // Super is constructed from this function's prototype
-               as_object* super = NULL;
-               as_object* iface = getPrototype().get(); // this function's 
prototype
-               if ( iface ) super = iface->get_super();
+               // Super is computed from the object we're constructing,
+               // It will work as long as we did set it's __proto__ and 
__constructor__
+               // properties already.
+               as_object* super = newobj->get_super();
 
                // Call the actual constructor function; new_obj is its 'this'.
 

Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.123
retrieving revision 1.124
diff -u -b -r1.123 -r1.124
--- server/as_object.cpp        4 Jun 2008 19:54:11 -0000       1.123
+++ server/as_object.cpp        19 Jun 2008 10:51:43 -0000      1.124
@@ -68,10 +68,13 @@
                _proto(proto)
        {
                set_prototype(proto);
+               //log_debug("as_super %p constructed with ctor %p and proto 
%p", this, ctor, proto);
        }
 
        virtual bool isSuper() const { return true; }
 
+       virtual as_object* get_super(const char* fname=0);
+
        std::string get_text_value() const
        {
                return "[object Object]";
@@ -121,6 +124,96 @@
        as_object* _proto;
 };
 
+as_object*
+as_super::get_super(const char* fname)
+{
+       // Super references the super class of our class prototype.
+       // Our class prototype is __proto__.
+       // Our class superclass prototype is __proto__.__proto__
+
+       // Our class prototype is __proto__.
+       as_object* proto = get_prototype().get(); 
+       if ( ! proto )
+       {
+               //log_debug("We (a super) have no associated prototype, 
returning a null-referencing as_super from get_super()");
+               return new as_super(0, 0);
+       }
+
+       // proto's __proto__ is superProto 
+       as_object* superProto = proto->get_prototype().get();
+
+       // proto's __constructor__ is superCtor
+       as_function* superCtor = proto->get_constructor();
+       assert(superCtor == get_constructor());
+
+       //log_debug("super %p proto is %p, its prototype %p", this, proto, 
proto->get_prototype());
+
+       VM& vm = getVM();
+       if ( fname && vm.getSWFVersion() > 6)
+       {
+               as_object* owner = 0;
+               string_table& st = vm.getStringTable();
+               string_table::key k = st.find(fname);
+
+               proto->findProperty(k, 0, &owner);
+               if ( ! owner )
+               {
+                       //log_debug("get_super: can't find property %s", fname);
+                       return 0;
+               }
+
+               //log_debug("object containing method %s is %p, its __proto__ 
is %p", fname, owner, owner->get_prototype());
+
+               assert(owner);
+
+               if ( owner != proto )
+               {
+                       as_object* tmp = proto;
+                       while (tmp && tmp->get_prototype() != owner) tmp = 
tmp->get_prototype().get();
+                       // ok, now 'tmp' should be the object whose __proto__ 
member contains
+                       // the actual named method.
+                       //
+                       // in the C:B:A:F case this would be B when calling 
super.myName() from
+                       // C.prototype.myName()
+                       //
+
+                       assert(tmp); // well, since we found the property, it 
must be somewhere!
+
+                       //log_debug("tmp is %p", tmp);
+
+                       if ( tmp != proto )
+                       {
+                               //assert(superProto == 
tmp->get_prototype().get());
+
+                               //superCtor = superProto->get_constructor();
+                               superCtor = tmp->get_constructor();
+                               //if ( ! superCtor ) log_debug("superProto 
(owner) has no __constructor__");
+                       }
+                       else
+                       {
+                               //log_debug("tmp == proto");
+                               superCtor = owner->get_constructor(); // most 
likely..
+                               if ( superProto ) superProto = 
superProto->get_prototype().get();
+                       }
+               }
+               else
+               {
+                       // TODO: check if we've anything to do here...
+                       //log_debug("owner == proto == %p", owner);
+                       //if ( superProto ) superProto = 
superProto->get_prototype().get();
+                       //superCtor = superProto->get_constructor();
+                       //if ( superProto )
+                       //{
+                       //      superCtor = superProto->get_constructor();
+                       //} // else superCtor = NULL ?
+               }
+       }
+
+       as_object* super = new as_super(superCtor, superProto);
+
+       return super;
+}
+
 
 // A PropertyList visitor copying properties to an object
 class PropsCopier {
@@ -254,136 +347,34 @@
 }
 
 as_object*
-as_object::get_super()
+as_object::get_super(const char* fname)
 {
-#if 1
-       // Assuming we're a prototype...
-
-       // __constructor__ is superCtor
-       as_function* superCtor = get_constructor();     
-
-       // __proto__ is superProto
-       // NOTE: we don't use get_prototype as it would skip the get_member 
-       // override of as_super.. A solution would likely be having as_super
-       // register the associated prototype as it's own __proto__ member
-       // so that get_prototype() returns it and can be threated exactly
-       // the same as other objects in ActionCallMethod
-       // TODO: try this, for simplification
-       //
-       as_object* superProto = NULL; // get_prototype().get();
-       as_value val;
-       if ( get_member(NSV::PROP_uuPROTOuu, &val) )
-       {
-               superProto = val.to_object().get();
-       }
-
-       as_object* super = new as_super(superCtor, superProto);
-
-       return super;
-#else
-
-       static bool getting = false;
-       as_object *owner = NULL;
-
-       Property *p = NULL;
-
-       if (getting)
-       {
-               log_debug("Already getting super, return NULL");
-               return NULL;
-       }
-
-       getting = true;
-
-#if 1
-       // Super is prototype.__constructor__
-       p = findProperty(NSV::PROP_PROTOTYPE, 0, &owner);
-       if (!p)
-       {
-               log_debug("This object (%s @ %p) has no 'prototype' get_super 
returns NULL", typeName(*this), (void*)this);
-               getting = false;
-               return NULL;
-       }
+       // Super references the super class of our class prototype.
+       // Our class prototype is __proto__.
+       // Our class superclass prototype is __proto__.__proto__
 
-       as_value protoval = p->getValue(*owner);
-       as_object *proto = protoval.to_object().get();
-       if (!proto)
-       {
-               log_debug("This object's (%s @ %p) 'prototype' member is not an 
object (%s) - get_super returns NULL", typeName(*this), (void*)this, protoval);
-               getting = false;
-               return NULL;
-       }
+       // Our class prototype is __proto__.
+       as_object* proto = get_prototype().get();
 
-       as_function* constructor = proto->get_constructor();
-       if ( ! constructor )
+       VM& vm = getVM();
+       if ( fname && vm.getSWFVersion() > 6)
        {
-               log_debug("This object's (%s @ %p) 'prototype' has no 
constructor", typeName(*this), (void*)this);
+               as_object* owner = 0;
+               string_table& st = vm.getStringTable();
+               string_table::key k = st.find(fname);
+               Property* p = findProperty(k, 0, &owner);
+               if ( owner != this ) proto = owner; // should be 0 if 
findProperty returned 0
        }
 
-       // prototype of the constructor is constructor.prototype (I think)
-#if 1
-       as_object* prototype = NULL;
-       if ( constructor && constructor->get_member(NSV::PROP_PROTOTYPE, 
&protoval) )
-       {
-               prototype = protoval.to_object().get();
-       }
-#else
-       as_object* prototype = get_prototype().get();
-       if ( ! prototype )
-       {
-               log_debug("This object (%s @ %p) has no __proto__", 
typeName(*this), (void*)this);
-       }
-#endif
+       // proto's __proto__ is superProto 
+       as_object* superProto = proto ? proto->get_prototype().get() : 0;
 
-       getting = false;
+       // proto's __constructor__ is superCtor
+       as_function* superCtor = proto ? proto->get_constructor() : 0;
 
-       return new as_super(constructor, prototype);
-#else
-       // Super is this.__proto__.__constructor__.prototype
-       as_object *proto = get_prototype().get();
-       if (!proto)
-       {
-               getting = false;
-               return NULL;
-       }
-
-       // If an object is its own prototype, we stop looking.
-       if (proto == this)
-       {
-               getting = false;
-               return this;
-       }
-
-       p = proto->findProperty(NSV::PROP_uuCONSTRUCTORuu, 0, &owner);
-       if (!p)
-       {
-               getting = false;
-               return NULL;
-       }
-
-       as_value ctor = p->getValue(*owner);
-       as_object *ctor_obj = ctor.to_object().get();
-       if (!ctor_obj)
-       {
-               getting = false;
-               return NULL;
-       }
-
-       p = ctor_obj->findProperty(NSV::PROP_PROTOTYPE, 0, &owner);
-       if (!p)
-       {
-               getting = false;
-               return NULL;
-       }
-
-       as_value ctor_proto = p->getValue(*owner);
-       as_object *super = ctor_proto.to_object().get();
-
-       getting = false;
+       as_object* super = new as_super(superCtor, superProto);
 
        return super;
-#endif
-#endif
 }
 
 as_function*

Index: server/as_object.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.h,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -b -r1.112 -r1.113
--- server/as_object.h  13 Jun 2008 13:21:05 -0000      1.112
+++ server/as_object.h  19 Jun 2008 10:51:43 -0000      1.113
@@ -681,7 +681,7 @@
        /// itself, or __proto__.__proto__ if this is not a prototype
        /// object. This is only conceptual however, and may be more
        /// convoluted to obtain the actual super.
-       as_object* get_super(); 
+       virtual as_object* get_super(const char* fname=0);
 
        /// Get the constructor for this object.
        ///

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.553
retrieving revision 1.554
diff -u -b -r1.553 -r1.554
--- server/sprite_instance.cpp  17 Jun 2008 13:43:37 -0000      1.553
+++ server/sprite_instance.cpp  19 Jun 2008 10:51:43 -0000      1.554
@@ -4400,10 +4400,18 @@
       {
         //log_debug(_("Calling the user-defined constructor against this 
sprite_instance"));
 
+
+        set_member(NSV::PROP_uuCONSTRUCTORuu, ctor);
+        if ( swfversion == 6 )
+        {
+          set_member(NSV::PROP_CONSTRUCTOR, ctor);
+        }
+
        // Provide a 'super' reference..
-       as_object* super = NULL;
-       as_object* iface = ctor->getPrototype().get(); // this function's 
prototype
-       if ( iface ) super = iface->get_super();
+       // Super is computed from the object we're constructing,
+       // It will work as long as we did set it's __proto__ and __constructor__
+       // properties already.
+       as_object* super = get_super();
 
         fn_call call(this, &(get_environment()), 0, 0, super);
 
@@ -4411,11 +4419,6 @@
         (*ctor)(call);
 
 
-        set_member(NSV::PROP_uuCONSTRUCTORuu, ctor);
-        if ( swfversion == 6 )
-        {
-          set_member(NSV::PROP_CONSTRUCTOR, ctor);
-        }
       }
     }
 

Index: server/timers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/timers.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -b -r1.53 -r1.54
--- server/timers.cpp   2 Jun 2008 09:52:53 -0000       1.53
+++ server/timers.cpp   19 Jun 2008 10:51:43 -0000      1.54
@@ -126,7 +126,7 @@
 
     as_value timer_method;
 
-    as_object* super = NULL;
+    as_object* super = _object->get_super(_function ? 0 : _methodName.c_str());
 
     if ( _function.get() )
     {
@@ -134,25 +134,17 @@
     }
     else
     {
-       VM& vm = VM::get();
+        VM& vm = _object->getVM();
        string_table::key k = vm.getStringTable().find(_methodName);
-       as_object* owner = NULL;
-       Property* p = _object->findProperty(k, 0, &owner);
-       if ( ! p )
+        as_value tmp;
+        if ( ! _object->get_member(k, &tmp) )
        {
             IF_VERBOSE_ASCODING_ERRORS(
-            log_aserror("member %s of object %p (interval method) can't be 
found",
-                 _methodName, (void*)_object.get());
+            log_aserror("object %p has no member named %s (interval method)",
+                 _object, _methodName);
             );
             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 )
         {

Index: server/asobj/AsBroadcaster.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/AsBroadcaster.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- server/asobj/AsBroadcaster.cpp      17 Jun 2008 18:05:41 -0000      1.16
+++ server/asobj/AsBroadcaster.cpp      19 Jun 2008 10:51:43 -0000      1.17
@@ -41,7 +41,8 @@
        /// Name of the event being broadcasted
        /// appropriately cased based on SWF version
        /// of the current VM
-       string_table::key _eventName;
+       std::string _eventName;
+       string_table::key _eventKey;
 
        // These two will be needed for consistency checking
        //size_t _origEnvStackSize;
@@ -61,11 +62,13 @@
        ///
        BroadcasterVisitor(const fn_call& fn)
                :
-               _eventName(0),
+               _eventName(),
+               _eventKey(0),
                _dispatched(0),
                _fn(fn)
        {
-               _eventName = 
VM::get().getStringTable().find(PROPNAME(fn.arg(0).to_string()));
+               _eventName = fn.arg(0).to_string();
+               _eventKey = VM::get().getStringTable().find(_eventName);
                _fn.drop_bottom();
        }
 
@@ -75,31 +78,9 @@
                boost::intrusive_ptr<as_object> o = v.to_object();
                if ( ! o ) return;
 
-#if 1 // oh boy.. I forgot to clean the "super" stuff up :! TODO: make 
fetching super easier...
-               as_object* super = NULL;
-               as_object* owner = NULL;
-               Property* p = o->findProperty(_eventName, 0, &owner);
-               if ( ! p )
-               {
-                       //log_debug("Object %p has no event handler named %s", 
o, VM::get().getStringTable().value(_eventName));
-                       // Older code used to increment this even when method
-                       // was not found, so I guess we'll do the same..
-                       ++_dispatched;
-                       return;
-               }
-               if ( o->isSuper() )
-               {
-                       log_unimpl("Getting super from a super in 
AsBroadcaster");
-               }
-               super = owner->get_super();
-               as_value method = p->getValue(*o);
-
-               _fn.super = super;
-               //log_debug("AsBroadcaster calling function with super %p", 
super);
-#else
                as_value method;
-               o->get_member(_eventName, &method);
-#endif
+               o->get_member(_eventKey, &method);
+        _fn.super = o->get_super(_eventName.c_str());
 
                if ( method.is_function() )
                {

Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.254
retrieving revision 1.255
diff -u -b -r1.254 -r1.255
--- server/vm/ASHandlers.cpp    17 Jun 2008 19:36:44 -0000      1.254
+++ server/vm/ASHandlers.cpp    19 Jun 2008 10:51:44 -0000      1.255
@@ -2792,7 +2792,6 @@
     this_ptr = thread.getThisPointer();
 
     // the new 'super' will be computed from the old one
-    // NOTE: this is equivalent to oldSuper->get_super() [ looks like.. ]
     as_function* oldSuper = function.to_as_function();
     super = oldSuper->get_super();
     }
@@ -3443,62 +3442,25 @@
 
     bool hasMethodName = ( (!method_name.is_undefined()) && 
(!method_string.empty()) );
 
-    as_object* this_ptr = obj.get();
-    as_object* super = NULL;
-    if ( obj.get() )
+    if ( ! obj )
     {
+        // SWF integrity check
+        IF_VERBOSE_ASCODING_ERRORS(
+        log_error(_("ActionCallMethod invoked with "
+            "non-object object/func (%s)"), obj_value);
+        );
+        env.drop(nargs+2);
+        env.top(0).set_undefined();
+        return;
+    }
+
+    as_object* this_ptr = obj.get();
+
         if ( obj->isSuper() ) 
         {
             if ( thread.isFunction() ) this_ptr = thread.getThisPointer();
-
-            as_object* proto = obj->get_prototype().get();
-            as_object* owner = proto;
-            if ( hasMethodName )
-            {
-                VM& vm = VM::get();
-                if ( vm.getSWFVersion() > 6 )
-                {
-                    string_table::key k = 
vm.getStringTable().find(method_string);
-                    Property* p = obj->findProperty(k, 0, &owner);
-                    if ( p )
-                    {
-                        assert(owner);
-                        if ( owner != obj.get() ) // I think it would be 
impossible for owner to be == obj (since obj is super.)
-                        {
-                            proto = owner;
-                        }
-                    }
-                }
-            }
-            super = proto ? proto->get_super() : 0;
-        }
-        else
-        {
-            as_object* proto = obj->get_prototype().get();
-            as_object* owner = proto;
-            if ( hasMethodName )
-            {
-                VM& vm = VM::get();
-                if ( vm.getSWFVersion() > 6 )
-                {
-                    string_table::key k = 
vm.getStringTable().find(method_string);
-                    Property* p = obj->findProperty(k, 0, &owner);
-                    if ( p )
-                    {
-                        assert(owner);
-                        if ( owner != obj.get() )
-                        {
-                            proto = owner;
-                        }
-                    }
-                }
-            }
-
-            //log_debug("%p.%s() call", obj.get(), method_string);
-            if ( proto ) super = proto->get_super();
-            else super = obj->get_super();
-        }
     }
+    as_object* super = obj->get_super(hasMethodName ? method_string.c_str() : 
0);
 
     if ( ! hasMethodName )
     {
@@ -3507,17 +3469,6 @@
 
         if ( ! method_val.is_function() )
         {
-            // TODO: log_aserror ? or try to invoke a [[Call]] method
-            //       ala ECMA262 ?
-            if ( ! obj )
-            {
-                log_error(_("ActionCallMethod invoked with "
-                        "undefined method_name "
-                        "and non-object object/func"));
-                env.drop(nargs+2);
-                env.top(0).set_undefined();
-                return;
-            }
 
 //#ifdef GNASH_DEBUG
             log_debug(_("Function object given to ActionCallMethod"
@@ -3551,20 +3502,6 @@
     }
     else
     {
-        if ( ! obj )
-        {
-            // SWF integrity check
-            IF_VERBOSE_ASCODING_ERRORS(
-            log_aserror(_("ActionCallMethod: "
-                "Tried to invoke method '%s' on non-object value %s."),
-                method_name,
-                obj_value.typeOf());
-            );
-            env.drop(nargs+2);
-            env.top(0).set_undefined();
-            return;
-        }
-
         if ( ! thread.getObjectMember(*obj, method_string, method_val) )
         {
             IF_VERBOSE_ASCODING_ERRORS(

Index: testsuite/actionscript.all/Inheritance.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Inheritance.as,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- testsuite/actionscript.all/Inheritance.as   18 Jun 2008 22:35:04 -0000      
1.63
+++ testsuite/actionscript.all/Inheritance.as   19 Jun 2008 10:51:44 -0000      
1.64
@@ -21,7 +21,7 @@
 // compile this test case with Ming makeswf, and then
 // execute it like this gnash -1 -r 0 -v out.swf
 
-rcsid="$Id: Inheritance.as,v 1.63 2008/06/18 22:35:04 strk Exp $";
+rcsid="$Id: Inheritance.as,v 1.64 2008/06/19 10:51:44 strk Exp $";
 #include "check.as"
 
 check_equals(typeof(Object.prototype.constructor), 'function');
@@ -333,8 +333,8 @@
  check_equals(ActorCalls, 1); 
 #endif
 #if OUTPUT_VERSION > 6
- xcheck_equals(n, "undefinedFFC");  // gnash gives undefinedFC here
- xcheck_equals(FctorCalls, 1); // gnash gives 0 here
+ check_equals(n, "undefinedFFC");  
+ check_equals(FctorCalls, 1); 
  check_equals(BctorCalls, 1); 
  check_equals(ActorCalls, 0); 
 #endif

Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -b -r1.148 -r1.149
--- testsuite/swfdec/PASSING    18 Jun 2008 07:15:43 -0000      1.148
+++ testsuite/swfdec/PASSING    19 Jun 2008 10:51:44 -0000      1.149
@@ -957,6 +957,8 @@
 super-existance-5.swf:c8740e8419004119c19555b454c6c073
 super-missing-5.swf:ac495f4b39b9f2cbeda4aa32445af59d
 super-missing-6.swf:cbe97c91c506c6d622a7b02aec7113d9
+super-missing-7.swf:426a088f86bc53fcaa665fee85c17756
+super-missing-8.swf:a6d21018d5465825c4df2ae47ccd6b84
 super-property-5.swf:8c57b2c41aad5760bd5b52c90b359316
 super-property-6.swf:7b606f24b21da8c389ccf9f3c8eea66e
 super-property-7.swf:d31079db52dee599db902021f74f8394




reply via email to

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