[Top][All Lists]
[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: |
Mon, 22 Jan 2007 20:57:05 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/01/22 20:57:05
Modified files:
. : ChangeLog
server : as_object.cpp
Log message:
* server/as_function.cpp (getPrototype): use get_member to
access
the prototype, in case it was set by ActionScript.
* server/as_object.cpp (instanceOf): fix broken implementation
always
returning true :/
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2148&r2=1.2149
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.25&r2=1.26
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2148
retrieving revision 1.2149
diff -u -b -r1.2148 -r1.2149
--- ChangeLog 22 Jan 2007 20:55:45 -0000 1.2148
+++ ChangeLog 22 Jan 2007 20:57:04 -0000 1.2149
@@ -1,6 +1,10 @@
2007-01-22 Sandro Santilli <address@hidden>
* server/as_object.h: add const version of get_prototype.
+ * server/as_function.cpp (getPrototype): use get_member to access
+ the prototype, in case it was set by ActionScript.
+ * server/as_object.cpp (instanceOf): fix broken implementation always
+ returning true :/
2007-01-22 Sandro Santilli <address@hidden>
Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- server/as_object.cpp 19 Jan 2007 10:15:47 -0000 1.25
+++ server/as_object.cpp 22 Jan 2007 20:57:04 -0000 1.26
@@ -263,11 +263,17 @@
bool
as_object::instanceOf(as_function* ctor)
{
- as_object* proto=m_prototype.get();
- do {
- if ( proto == ctor->getPrototype() ) return true;
- proto = ctor->getPrototype();
- } while (proto);
+ 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");
return false;
}
- [Gnash-commit] gnash ChangeLog server/as_object.cpp,
Sandro Santilli <=