CVSROOT: /sources/gnash Module name: gnash Changes by: Zou Lunkai <zoulunkai> 07/11/21 08:29:41
Modified files: . : ChangeLog server : as_value.cpp testsuite/misc-swfc.all: swf4opcode.sc Log message: * server/as_value.cpp: to_number() convert invalid float literal to zero instead of NaN for swf<5. * testsuite/misc-swfc.all/swf4opcode.sc: xcheck->check. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4905&r2=1.4906 http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.96&r2=1.97 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-swfc.all/swf4opcode.sc?cvsroot=gnash&r1=1.4&r2=1.5 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4905 retrieving revision 1.4906 diff -u -b -r1.4905 -r1.4906 --- ChangeLog 21 Nov 2007 06:56:16 -0000 1.4905 +++ ChangeLog 21 Nov 2007 08:29:40 -0000 1.4906 @@ -1,5 +1,11 @@ 2007-11-21 Zou Lunkai <[EMAIL PROTECTED]> + * server/as_value.cpp: to_number() convert invalid float literal + to zero instead of NaN for swf<5. + * testsuite/misc-swfc.all/swf4opcode.sc: xcheck->check. + +2007-11-21 Zou Lunkai <[EMAIL PROTECTED]> + * testsuite/misc-swfc.all/swf4opcode.sc, testsuite/misc-actionsript.all/ops.as: more opcode tests. Index: server/as_value.cpp =================================================================== RCS file: /sources/gnash/gnash/server/as_value.cpp,v retrieving revision 1.96 retrieving revision 1.97 diff -u -b -r1.96 -r1.97 --- server/as_value.cpp 20 Nov 2007 00:44:03 -0000 1.96 +++ server/as_value.cpp 21 Nov 2007 08:29:40 -0000 1.97 @@ -348,23 +348,27 @@ // @@ Moock says the rule here is: if the // string is a valid float literal, then it // gets converted; otherwise it is set to NaN. - - try { - + try + { double d = boost::lexical_cast<double>(getStr()); - if ( isinf(d) ) { + if ( isinf(d) ) + { + if(swfversion <= 4) + return (double)0.0; + else return (double)NAN; } return d; - - } catch (boost::bad_lexical_cast &) { - + } + catch (boost::bad_lexical_cast &) + { + if(swfversion <= 4) + return (double)0.0; + else return (double)NAN; - } - } case NULLTYPE: Index: testsuite/misc-swfc.all/swf4opcode.sc =================================================================== RCS file: /sources/gnash/gnash/testsuite/misc-swfc.all/swf4opcode.sc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- testsuite/misc-swfc.all/swf4opcode.sc 21 Nov 2007 06:56:17 -0000 1.4 +++ testsuite/misc-swfc.all/swf4opcode.sc 21 Nov 2007 08:29:40 -0000 1.5 @@ -24,7 +24,7 @@ * Deduction: * * There is no NaN number in swf4 at all, invalid numbers are converted to 0. - * Fix as_value::to_number() should fix all tests in this file. + * */ // @@ -64,19 +64,19 @@ // test opcode ActionEquals // testvar = (uninitialized1 == ''); - xcheck_equals(testvar, 1); + check_equals(testvar, 1); testvar = ('' == uninitialized2); - xcheck_equals(testvar, 1); + check_equals(testvar, 1); testvar = ('' == ''); - xcheck_equals(testvar, 1); + check_equals(testvar, 1); testvar = ('xyz' == 'abc'); //Ref: http://swishtutor.com // both hands are converted to zero - xcheck_equals(testvar, 1); - xcheck_equals('xyz', 0); - xcheck_equals('abc', 0); - xcheck_equals('xyz', 'xyz'); - xcheck_equals('xyz', 'abc'); + check_equals(testvar, 1); + check_equals('xyz', 0); + check_equals('abc', 0); + check_equals('xyz', 'xyz'); + check_equals('xyz', 'abc'); // test 'undefined' in swf4 check_equals(uninitialized2, uninitialized3); @@ -113,8 +113,8 @@ // x and y are converted to number 0 before comparision check( ! (x < y) ); check( ! (x > y) ); - xcheck( x == y ); - xcheck( x == 0); + check( x == y ); + check( x == 0); // // test swf4 ActionMultiply, ActionDivide, ActionAdd, ActionSubstract @@ -122,13 +122,13 @@ x = "abc"; y = 0; z = x * y; - xcheck_equals(z, 0); + check_equals(z, 0); z = x / 1; - xcheck_equals(z, 0); + check_equals(z, 0); z = x + 1; - xcheck_equals(z, 1); + check_equals(z, 1); z = x - 1; - xcheck_equals(z, -1); + check_equals(z, -1); // // TODO: add tests for ActionStringEq, ActionStringGreater, _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit