CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 08/01/31 21:38:41
Modified files: . : ChangeLog libbase : URL.cpp testsuite/libbase: URLTest.cpp Log message: Fix parsing of urls with an ".swf" component in the query string. This is basically a revert of this patch by bjacques: http://cvs.savannah.gnu.org/viewvc/gnash/libbase/URL.cpp?root=gnash&r1=1.26&r2=1.27 CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5541&r2=1.5542 http://cvs.savannah.gnu.org/viewcvs/gnash/libbase/URL.cpp?cvsroot=gnash&r1=1.42&r2=1.43 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/libbase/URLTest.cpp?cvsroot=gnash&r1=1.17&r2=1.18 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5541 retrieving revision 1.5542 diff -u -b -r1.5541 -r1.5542 --- ChangeLog 31 Jan 2008 20:54:41 -0000 1.5541 +++ ChangeLog 31 Jan 2008 21:38:40 -0000 1.5542 @@ -1,5 +1,13 @@ 2008-01-31 Sandro Santilli <[EMAIL PROTECTED]> + * libbase/URL.cpp: don't threat ".swf" strings as any special. + Fixes parsing of urls with ".swf" in the query string. + * testsuite/libbase/URLTest.cpp: add test for query strings + containing an ".swf" component, like many from + http://foo.keybit.net/~strk/mapview/. + +2008-01-31 Sandro Santilli <[EMAIL PROTECTED]> + * gui/Player.cpp (load_movie): still add the acutual filename, if given, in the list of local sandboxes, or "gnash -u http://remote ./local.swf" won't work (the konqueror plugin uses that format, Index: libbase/URL.cpp =================================================================== RCS file: /sources/gnash/gnash/libbase/URL.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -u -b -r1.42 -r1.43 --- libbase/URL.cpp 21 Jan 2008 20:55:44 -0000 1.42 +++ libbase/URL.cpp 31 Jan 2008 21:38:41 -0000 1.43 @@ -353,14 +353,6 @@ return; } - size_t swfpos = _path.rfind(".swf"); - if (swfpos != string::npos && swfpos > qmpos) - { - // If the questionmark precedes the file suffix, we're not dealing with a - // query string. - return; - } - _querystring = _path.substr(qmpos+1); // update _path Index: testsuite/libbase/URLTest.cpp =================================================================== RCS file: /sources/gnash/gnash/testsuite/libbase/URLTest.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -b -r1.17 -r1.18 --- testsuite/libbase/URLTest.cpp 21 Jan 2008 23:26:50 -0000 1.17 +++ testsuite/libbase/URLTest.cpp 31 Jan 2008 21:38:41 -0000 1.18 @@ -143,19 +143,17 @@ check_equals (u16.querystring(), "option1=23&option2=65"); check_equals (u16.anchor(), "anchor"); check_equals (u16.str(), "file:///my/path/?option1=23&option2=65#anchor"); - URL u17("/test?.swf"); check_equals (u17.protocol() , "file" ); check_equals (u17.hostname() , "" ); - check_equals (u17.path() , "/test?.swf" ); + check_equals (u17.path() , "/test" ); check_equals (u17.str() , "file:///test?.swf" ); - check_equals (u17.querystring() , "" ); + check_equals (u17.querystring() , ".swf" ); // Test that this doesn't crash. URL u18("file:///loadMovieTest.swf"); URL u19("file://../../test.swf", u18); - // Test query_string parsing map<string, string> qs; URL::parse_querystring(u13.querystring(), qs); @@ -168,6 +166,28 @@ check_equals (qs["option1"], "23"); check_equals (qs["option2"], "65"); + // Test query string with embedded path to an .swf + // Broken by: + // htp://cvs.savannah.gnu.org/viewvc/gnash/libbase/URL.cpp?root=gnash&r1=1.26&r2=1.27 + // + URL u20("http://www.gnu.org/~gnash/movie.swf?arg1=600&arg2=path/to/file.swf&arg3=320x200"); + check_equals(u20.protocol(), "http"); + check_equals(u20.hostname(), "www.gnu.org"); + check_equals(u20.path(), "/~gnash/movie.swf"); + check_equals(u20.querystring(), "arg1=600&arg2=path/to/file.swf&arg3=320x200"); + qs.clear(); + URL::parse_querystring(u20.querystring(), qs); + check_equals(qs["arg1"], "600"); + check_equals(qs["arg2"], "path/to/file.swf"); + check_equals(qs["arg3"], "320x200"); + + // Test relative resolution when query string contains slashes + URL u21("movie2.swf", u20); + check_equals (u21.protocol(), "http"); + check_equals (u21.querystring(), ""); + check_equals (u21.path(), "/~gnash/movie2.swf"); + check_equals (u21.hostname(), "www.gnu.org"); + // TODO: Samba paths } _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit