On Tue, Oct 23, 2007 at 07:39:41PM +0200, strk wrote: > On Thu, Oct 18, 2007 at 11:47:57AM +0000, Chad Musick wrote: > > > http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.68&r2=1.69 > > > > - // found a getter/setter property in the inheritance chain > > - // so set that and return > > - Property* prop = findGetterSetter(key); > > - if ( prop ) > > - { > > - try > > +// Handles read_only and static properties properly. > > +void > > +as_object::set_member_default(string_table::key key, const as_value& val, > > + string_table::key nsname) > > +{ > > + //log_msg(_("set_member_default(%s)"), key.c_str()); > > + Property* prop = findProperty(key, nsname); > > Chad, it seems this change broke something, see my new test in > actionscript.all/Object.as >
> This is the problem: > > class A : B : C > > C.m is a getter-setter > B.m is a normal property > A.m doesn't exist > > When setting A.m, the getter-setter should be invoked. > findProperty would find B.m and return that while findGetterSetter would > find C.m. > > No idea about the new isStatic thing. I'm thinking about adding a findUpdatableProperty, which would check for GetterSetters and possible "statics" (if it makes sense for you) and own properties. The method would also need to be used in the current as_environment::set_variable_raw as objects in the scope stack (with stack at least) should never be added members to unless updatable properties (getter-setter in their inheritance chain or pre-existing own properties of them) are found. --strk; _______________________________________________ Gnash-commit mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnash-commit
