gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/as_object.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_object.cpp
Date: Tue, 23 Jan 2007 12:12:29 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/01/23 12:12:29

Modified files:
        .              : ChangeLog 
        server         : as_object.cpp 

Log message:
                * server/as_object.cpp (instanceOf): fixed clearly bogus
                  implementation.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2153&r2=1.2154
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.27&r2=1.28

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2153
retrieving revision 1.2154
diff -u -b -r1.2153 -r1.2154
--- ChangeLog   23 Jan 2007 12:00:08 -0000      1.2153
+++ ChangeLog   23 Jan 2007 12:12:29 -0000      1.2154
@@ -2,7 +2,8 @@
 
        * server/as_object.cpp (copyProperties): use set_member
          while importing properties to properly scan the
-         inheritance chain.
+         inheritance chain; (instanceOf): fixed clearly bogus
+         implementation.
        * server/PropertyList.h: add visitValues() templated function.
        * server/sprite_instance.cpp (sprite_attach_movie):
          Copy properties from initialization object *after*

Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- server/as_object.cpp        23 Jan 2007 12:00:09 -0000      1.27
+++ server/as_object.cpp        23 Jan 2007 12:12:29 -0000      1.28
@@ -299,17 +299,11 @@
 bool
 as_object::instanceOf(as_function* ctor)
 {
-       const as_object* obj = this;
-
-       std::set<const as_object*> visited;
-
-       while (obj && visited.insert(obj).second )
-       {
-               if ( obj->get_prototype() == ctor->getPrototype() ) return true;
-               obj = obj->get_prototype();
-       }
-
-       if ( obj ) log_warning("Circular inheritance chain detected during 
instanceOf call");
+       as_object* proto=m_prototype.get();
+       do {
+               if ( proto == ctor->getPrototype() ) return true;
+               proto = ctor->getPrototype();
+       } while (proto);
 
        return false;
 }




reply via email to

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