CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/11/22 21:45:41
Modified files: . : ChangeLog server : as_environment.cpp testsuite/actionscript.all: getvariable.as testsuite/swfdec: PASSING Log message: Try evaluating variables paths containing slashes but no colon as sprites before falling back to property lookup. This fixes important tests in swfdec testsuite and actionscript.all/getvariable.as CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4928&r2=1.4929 http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.113&r2=1.114 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/getvariable.as?cvsroot=gnash&r1=1.20&r2=1.21 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.65&r2=1.66 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4928 retrieving revision 1.4929 diff -u -b -r1.4928 -r1.4929 --- ChangeLog 22 Nov 2007 20:43:46 -0000 1.4928 +++ ChangeLog 22 Nov 2007 21:45:40 -0000 1.4929 @@ -1,3 +1,13 @@ +2007-11-22 Sandro Santilli <[EMAIL PROTECTED]> + + * server/as_environment.cpp (get_variable): variables paths containing + slashes but no colon will be attempted to be evaluated as sprites + before falling back to property lookup. + * testsuite/actionscript.all/getvariable.as: successes in all newly + added tests. + * testsuite/swfdec/PASSING: getvariable-slashpath and enumerate + tests succeed. + 2007-11-22 Markus Gothe <[EMAIL PROTECTED]> * macros/archflag.m4: Updated to the latest version. Index: server/as_environment.cpp =================================================================== RCS file: /sources/gnash/gnash/server/as_environment.cpp,v retrieving revision 1.113 retrieving revision 1.114 diff -u -b -r1.113 -r1.114 --- server/as_environment.cpp 22 Nov 2007 19:40:24 -0000 1.113 +++ server/as_environment.cpp 22 Nov 2007 21:45:40 -0000 1.114 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: as_environment.cpp,v 1.113 2007/11/22 19:40:24 strk Exp $ */ +/* $Id: as_environment.cpp,v 1.114 2007/11/22 21:45:40 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -81,23 +81,31 @@ IF_VERBOSE_ASCODING_ERRORS( log_aserror(_("find_object(\"%s\") [ varname = '%s' - current target = '%s' ] failed"), path.c_str(), varname.c_str(), - m_target->get_text_value().c_str() - ); - ); - + m_target->get_text_value().c_str()); as_value tmp = get_variable_raw(path, scopeStack, retTarget); if ( ! tmp.is_undefined() ) { - IF_VERBOSE_ASCODING_ERRORS( log_aserror(_("...but get_variable_raw(%s, <scopeStack>) succeeded (%s)!"), path.c_str(), tmp.to_debug_string().c_str()); - ) } - return as_value(); + ); + return as_value(); // TODO: should we check get_variable_raw ? } } else { + // TODO: have this checked by parse_path as an optimization + if ( varname.find_first_of('/') != string::npos ) + { + // Consider it all a path ... + as_object* target = find_object(varname, &scopeStack); + if ( target ) + { + // ... but only if it resolves to a sprite + sprite_instance* m = target->to_movie(); + if ( m ) return as_value(m); + } + } return get_variable_raw(varname, scopeStack, retTarget); } } Index: testsuite/actionscript.all/getvariable.as =================================================================== RCS file: /sources/gnash/gnash/testsuite/actionscript.all/getvariable.as,v retrieving revision 1.20 retrieving revision 1.21 diff -u -b -r1.20 -r1.21 --- testsuite/actionscript.all/getvariable.as 22 Nov 2007 20:49:38 -0000 1.20 +++ testsuite/actionscript.all/getvariable.as 22 Nov 2007 21:45:41 -0000 1.21 @@ -19,7 +19,7 @@ // compile this test case with Ming makeswf, and then // execute it like this gnash -1 -r 0 -v out.swf -rcsid="$Id: getvariable.as,v 1.20 2007/11/22 20:49:38 strk Exp $"; +rcsid="$Id: getvariable.as,v 1.21 2007/11/22 21:45:41 strk Exp $"; #include "check.as" @@ -129,8 +129,8 @@ setvariable }; #if OUTPUT_VERSION > 5 - xcheck_equals(typeof(checkpoint), 'movieclip'); - xcheck_equals(checkpoint, _level0.mc.mc); + check_equals(typeof(checkpoint), 'movieclip'); + check_equals(checkpoint, _level0.mc.mc); #else check_equals(typeof(checkpoint), 'undefined'); check_equals(checkpoint, _level0.mc.mc); @@ -147,8 +147,8 @@ setvariable }; #if OUTPUT_VERSION > 5 - xcheck_equals(typeof(checkpoint), 'movieclip'); - xcheck_equals(checkpoint, _level0.mc.mc); + check_equals(typeof(checkpoint), 'movieclip'); + check_equals(checkpoint, _level0.mc.mc); #else check_equals(typeof(checkpoint), 'undefined'); check_equals(checkpoint, _level0.mc.mc); Index: testsuite/swfdec/PASSING =================================================================== RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v retrieving revision 1.65 retrieving revision 1.66 diff -u -b -r1.65 -r1.66 --- testsuite/swfdec/PASSING 22 Nov 2007 11:09:55 -0000 1.65 +++ testsuite/swfdec/PASSING 22 Nov 2007 21:45:41 -0000 1.66 @@ -146,6 +146,9 @@ empty-function-8.swf:8590a81f543ca2f7a1bc6fb2105f5672 empty-stack.swf:47ef885ae85e56e2ba8caae6eed46704 enumerate-5.swf:62ec57ff724247d42c254cfadca06f2d +enumerate-6.swf:85f81c4443f6137238d4fa5561579812 +enumerate-7.swf:35e50f33fd5b00821d709ce06dc3bcad +enumerate-8.swf:6c30f609bf36664ce15a7a63ea2857cf event-order.swf:6cb896771a691dc394226c3f542b1bec export-case-5.swf:8b37704408e27ffb8b51c63179c7702c export-case-6.swf:7c3106de02ed0a94ed0bc816bf526c02 @@ -197,6 +200,9 @@ getvariable-dotdot-8.swf:2861d34a85b5de09f41af572e0b1a6a5 getvariable-length-5.swf:2d07e2afdf45356cf2df5c1176ed29ad getvariable-slashpath-5.swf:3067a6cdf4991af85520d7eb3bb51178 +getvariable-slashpath-6.swf:17d6ee6ddb15296e887944d7c7c45432 +getvariable-slashpath-7.swf:499213312255eba3746c4ff6b7b4782d +getvariable-slashpath-8.swf:19df043ceda9c1db9efbd185bb5ae2cb getvariable-special-5.swf:4baac55533a4cc67a3419dafb97cc888 glow-filter-properties-5.swf:b3d05908aaa98c7115ec1727d695a16a goto1.swf:6f35a27cb3aee7f282eccb3b16290c70 @@ -526,8 +532,8 @@ tointeger-various-6.swf:71257f69e5f3feb6ae18ebf26ad2eb22 tointeger-various-7.swf:6251bc39b6449a82c89b6c821f9af0ff totalframes.swf:cdc0d5e2017d293438ef80fa136c44e8 -transform.swf:5c8533f9168ca3e92d000ce1693ed5ef transform-properties-5.swf:b0386824584340e1d0a80f986ce779b9 +transform.swf:5c8533f9168ca3e92d000ce1693ed5ef try-throw-in-finally-6.swf:1c12d4b0f949704bd0794d73f0385007 try-throw-in-finally-7.swf:0342b214948d6bec886863f6f66cab33 try-throw-in-finally-8.swf:f5b7ae88f4383ebcdb8313674a2d85cb _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit