[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_object.cpp testsuite/...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_object.cpp testsuite/... |
Date: |
Fri, 26 Oct 2007 23:34:15 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/10/26 23:34:15
Modified files:
. : ChangeLog
server : as_object.cpp
testsuite/swfdec: PASSING
Log message:
* server/as_object.cpp: have __proto__ respect the same
visibility rules of other properties, check visibility
rules in findUpdatableProperty.
* testsuite/swfdec/PASSING: one more test passing (more failing
from the same set).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4724&r2=1.4725
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.72&r2=1.73
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.50&r2=1.51
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4724
retrieving revision 1.4725
diff -u -b -r1.4724 -r1.4725
--- ChangeLog 26 Oct 2007 23:30:24 -0000 1.4724
+++ ChangeLog 26 Oct 2007 23:34:14 -0000 1.4725
@@ -1,3 +1,11 @@
+2007-10-26 Sandro Santilli <address@hidden>
+
+ * server/as_object.cpp: have __proto__ respect the same
+ visibility rules of other properties, check visibility
+ rules in findUpdatableProperty.
+ * testsuite/swfdec/PASSING: one more test passing (more failing
+ from the same set).
+
2007-10-26 Tomas Groth Christensen <address@hidden>
* server/parser/video_stream_def.cpp: Check if iterator is valid, before
Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -b -r1.72 -r1.73
--- server/as_object.cpp 26 Oct 2007 22:56:07 -0000 1.72
+++ server/as_object.cpp 26 Oct 2007 23:34:14 -0000 1.73
@@ -212,15 +212,13 @@
Property*
as_object::findUpdatableProperty(string_table::key key, string_table::key
nsname)
{
+ int swfVersion = _vm.getSWFVersion();
+
Property* prop = _members.getProperty(key, nsname);
- if ( prop ) return prop;
+ if ( prop && prop->isVisible(swfVersion) ) return prop;
// don't enter an infinite loop looking for __proto__ ...
- if (key == NSV::PROP_uuPROTOuu)
- {
- Property* prop = _members.getProperty(key, nsname);
- if ( prop ) return prop;
- }
+ if (key == NSV::PROP_uuPROTOuu) return NULL;
// this set will keep track of visited objects,
// to avoid infinite loops
@@ -231,7 +229,7 @@
while ( obj && visited.insert(obj.get()).second )
{
Property* prop = obj->_members.getProperty(key, nsname);
- if ( prop && prop->isGetterSetter() )
+ if ( prop && prop->isGetterSetter() &&
prop->isVisible(swfVersion) )
{
// what if a property is found which is
// NOT a getter/setter ?
@@ -636,6 +634,8 @@
as_object::copyProperties(const as_object& o)
{
PropsCopier copier(*this);
+
+ // TODO: check if non-visible properties should be also copied !
o._members.visitValues(copier,
// Need const_cast due to getValue getting non-const ...
const_cast<as_object&>(o));
@@ -780,24 +780,18 @@
as_object::get_prototype()
{
static string_table::key key = NSV::PROP_uuPROTOuu;
- as_value tmp;
- // I don't think any subclass should override getting __proto__
anyway...
- //if ( ! get_member(key, &tmp) ) return NULL;
- if (!_members.getValue(key, tmp, *this) ) return NULL;
- return tmp.to_object();
-#if 0 // the inheritance chain MUST end somewhere, handle the SWF4 thing in
some other way
- if ( m_prototype ) return m_prototype.get();
- //log_msg(_("as_object::get_prototype(): Hit top of inheritance
chain"));
+ int swfVersion = _vm.getSWFVersion();
- // if SWF version < 5 the Object interface won't keep alive !
- if ( _vm.getSWFVersion() > 4 )
- {
- return getObjectInterface();
- }
+ boost::intrusive_ptr<as_object> nullRet;
- return NULL;
-#endif
+ Property* prop = _members.getProperty(key);
+ if ( ! prop ) return nullRet;
+ if ( ! prop->isVisible(swfVersion) ) return nullRet;
+
+ as_value tmp = prop->getValue(*this);
+
+ return tmp.to_object();
}
#ifdef NEW_KEY_LISTENER_LIST_DESIGN
Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- testsuite/swfdec/PASSING 26 Oct 2007 22:56:07 -0000 1.50
+++ testsuite/swfdec/PASSING 26 Oct 2007 23:34:14 -0000 1.51
@@ -280,6 +280,7 @@
preload.swf:2fd2da9440e29289e83dadd1ed9c99c4
property-native-5.swf:3609da1095cd97f5373da462b45ead1d
prototype-addProperty-5.swf:1d9ac80542b3a9238ed09e78bdb8c563
+prototype-propflags-5.swf:43f4ffa51653f54d0182610a01db8f1f
prototype-propflags-8.swf:3c6f02bf6a3348879f3f50c28ee599cb
prototypes.swf:21df8d7eda568fd27f19a56fec87a415
register-count.swf:861abb623a228e4152df92896ee807f0
- [Gnash-commit] gnash ChangeLog server/as_object.cpp testsuite/...,
Sandro Santilli <=