CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/11/22 18:50:56
Modified files: . : ChangeLog server : as_environment.cpp as_environment.h Log message: drop the is_slash_based parameter from parse_path, which gets simplified a bit. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4924&r2=1.4925 http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.110&r2=1.111 http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.h?cvsroot=gnash&r1=1.65&r2=1.66 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4924 retrieving revision 1.4925 diff -u -b -r1.4924 -r1.4925 --- ChangeLog 22 Nov 2007 18:05:10 -0000 1.4924 +++ ChangeLog 22 Nov 2007 18:50:55 -0000 1.4925 @@ -1,5 +1,10 @@ 2007-11-22 Sandro Santilli <[EMAIL PROTECTED]> + * server/as_environment.{cpp,h}: drop the is_slash_based + parameter from parse_path, which gets simplified a bit. + +2007-11-22 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/actionscript.all/getvariable.as: additional test for /slash/based path ending with a colon. Index: server/as_environment.cpp =================================================================== RCS file: /sources/gnash/gnash/server/as_environment.cpp,v retrieving revision 1.110 retrieving revision 1.111 diff -u -b -r1.110 -r1.111 --- server/as_environment.cpp 21 Nov 2007 09:21:49 -0000 1.110 +++ server/as_environment.cpp 22 Nov 2007 18:50:56 -0000 1.111 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: as_environment.cpp,v 1.110 2007/11/21 09:21:49 cmusick Exp $ */ +/* $Id: as_environment.cpp,v 1.111 2007/11/22 18:50:56 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -61,8 +61,7 @@ log_debug(_("get_variable(%s)"), varname.c_str()); #endif - bool is_slash_based; - if (parse_path(varname, path, var, &is_slash_based)) + if ( parse_path(varname, path, var) ) { // TODO: let find_target return generic as_objects, or use 'with' stack, // see player2.swf or bug #18758 (strip.swf) @@ -258,11 +257,11 @@ std::string path; std::string var; //log_msg(_("set_variable(%s, %s)"), varname.c_str(), val.to_debug_string().c_str()); - bool is_slash_based; - if (parse_path(varname, path, var, &is_slash_based)) { + if ( parse_path(varname, path, var) ) + { //log_msg(_("Variable '%s' parsed into path='%s', var='%s'"), varname.c_str(), path.c_str(), var.c_str()); //target = find_target(path); - target = find_object(path, &scopeStack); //is_slash_based ? find_object_slashsyntax(path, &scopeStack) : find_object_dotsyntax(path, &scopeStack); + target = find_object(path, &scopeStack); if (target) { target->set_member(VM::get().getStringTable().find(var), val); @@ -412,7 +411,7 @@ /* public static */ bool as_environment::parse_path(const std::string& var_path, - std::string& path, std::string& var, bool* is_slash_based) + std::string& path, std::string& var) { //log_msg(_("parse_path(%s)"), var_path.c_str()); // Search for colon. @@ -420,7 +419,6 @@ int var_path_length = var_path.length(); for ( ; colon_index < var_path_length; colon_index++) { if (var_path[colon_index] == ':') { - if ( is_slash_based ) *is_slash_based = true; // Found it. break; } @@ -432,7 +430,6 @@ for (colon_index = var_path_length - 1; colon_index >= 0; colon_index--) { if (var_path[colon_index] == '.') { // Found it. - if ( is_slash_based ) *is_slash_based = false; break; } } @@ -444,14 +441,13 @@ // Make the subparts. - // Var. + // Var var = &var_path[colon_index + 1]; - // @@ could be better. - path = var_path; - path.resize(colon_index); + // Path + path.assign(var_path, 0, colon_index); -//log_msg(_(" path=%s var=%s"), path.c_str(), var.c_str()); +//log_debug(_(" path=%s var=%s"), path.c_str(), var.c_str()); return true; } @@ -462,9 +458,8 @@ { string path; string var; - bool is_slash_based; - if( ! parse_path(var_path, path, var, &is_slash_based) ) return false; - as_object* target_ptr = find_object(path); // is_slash_based ? find_object_slashsyntax(path) : find_object_dotsyntax(path); + if ( ! parse_path(var_path, path, var) ) return false; + as_object* target_ptr = find_object(path); if ( ! target_ptr ) return false; target_ptr->get_member(VM::get().getStringTable().find(var), &val); Index: server/as_environment.h =================================================================== RCS file: /sources/gnash/gnash/server/as_environment.h,v retrieving revision 1.65 retrieving revision 1.66 diff -u -b -r1.65 -r1.66 --- server/as_environment.h 22 Nov 2007 11:09:54 -0000 1.65 +++ server/as_environment.h 22 Nov 2007 18:50:56 -0000 1.66 @@ -377,30 +377,26 @@ /// int get_version() const; - // See if the given variable name is actually a sprite path - // followed by a variable name. These come in the format: - // - // /path/to/some/sprite/:varname - // - // (or same thing, without the last '/') - // - // or - // path.to.some.var - // - // If that's the format, puts the path part (no colon or - // trailing slash) in *path, and the varname part (no colon, no dot) - // in *var and returns true. - // - // If no colon or dot, returns false and leaves *path & *var alone. - // - /// @param is_slash_based - /// If not null gets set to true if path is slash-based - /// (path/to/:variable), and to false if path is dot-based - /// (path.to.variable). + /// See if the given variable name is actually a sprite path + /// followed by a variable name. These come in the format: + /// + /// /path/to/some/sprite/:varname + /// + /// (or same thing, without the last '/') + /// + /// or + /// path.to.some.var + /// + /// If that's the format, puts the path part (no colon or + /// trailing slash) in *path, and the varname part (no colon, no dot) + /// in *var and returns true. + /// + /// If no colon or dot, returns false and leaves *path & *var alone. /// /// TODO: return an integer: 0 not a path, 1 a slash-based path, 2 a dot-based path + /// static bool parse_path(const std::string& var_path, std::string& path, - std::string& var, bool* is_slash_based=NULL); + std::string& var); /// \brief /// Try to parse a string as a variable path @@ -409,12 +405,14 @@ /// /// /path/to/some/sprite/:varname /// - /// (or same thing, without the last '/') + /// or + /// + /// /path/to/some/sprite /// /// or /// path.to.some.var /// - /// If there's no dot nor comma, or if the 'path' part + /// If there's no dot nor colon, or if the 'path' part /// does not resolve to an object, this function returns false. /// Otherwise, true is returned and 'target' and 'val' /// parameters are appropriaterly set. _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit