gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-commit] gnash ChangeLog server/as_value.cpp server/as_v...


From: zou lunkai
Subject: Re: [Gnash-commit] gnash ChangeLog server/as_value.cpp server/as_v...
Date: Mon, 9 Jul 2007 13:24:04 +0800

+check(NaN != NaN); // TODO: this seems a bogus check, the check
should actually return false

confirmed, should return false.

For swf>=5, The observed results here are:

trace(NaN == NaN);   //true
trace(NaN >= NaN);   //true
trace(NaN <= NaN);  //true
trace(NaN > NaN);    //undefined
trace(NaN < NaN);    //undefined
trace(NaN != NaN);   //false

Yes, I can add these to the testsuite. But I guess we might have
different "observed results" with different  PP.

On 7/9/07, Sandro Santilli <address@hidden> wrote:
CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/07/09 03:30:50

Modified files:
        .              : ChangeLog
        server         : as_value.cpp as_value.h
        testsuite/actionscript.all: Number.as

Log message:
                * server/as_value.{cpp,h} (equals): don't always force string
                  comparison if the first argument is a string (matches ECMA 
spec,
                  fixes bug #20403).
                * testsuite/actionscript.all/Number.as: add test for string:00 
==
                  number:0

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3684&r2=1.3685
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.55&r2=1.56
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.h?cvsroot=gnash&r1=1.56&r2=1.57
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Number.as?cvsroot=gnash&r1=1.21&r2=1.22

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3684
retrieving revision 1.3685
diff -u -b -r1.3684 -r1.3685
--- ChangeLog   9 Jul 2007 02:13:43 -0000       1.3684
+++ ChangeLog   9 Jul 2007 03:30:49 -0000       1.3685
@@ -1,5 +1,13 @@
 2007-07-08 Sandro Santilli <address@hidden>

+       * server/as_value.{cpp,h} (equals): don't always force string
+         comparison if the first argument is a string (matches ECMA spec,
+         fixes bug #20403).
+       * testsuite/actionscript.all/Number.as: add test for string:00 ==
+         number:0
+
+2007-07-08 Sandro Santilli <address@hidden>
+
        * server/asobj/Global.h: include extension.h when needed.
        * server/swf.h: link to info about ActionNewAdd
        * testsuite/actionscript.all/Number.as: Add a quick testcases

Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- server/as_value.cpp 1 Jul 2007 10:54:20 -0000       1.55
+++ server/as_value.cpp 9 Jul 2007 03:30:50 -0000       1.56
@@ -658,10 +658,6 @@
     if ( obj_or_func && v_obj_or_func ) return m_object_value == 
v.m_object_value;
     if ( m_type == v.m_type ) return equalsSameType(v);

-    else if (m_type == STRING)
-    {
-       return m_string_value == v.to_string(env);
-    }
     else if (m_type == NUMBER && v.m_type == STRING)
     {
        return equalsSameType(v.to_number(env)); // m_number_value == 
v.to_number(env);
@@ -672,6 +668,10 @@
        return v.equalsSameType(to_number(env)); // m_number_value == 
v.to_number(env);
        //return v.m_number_value == to_number(env);
     }
+    else if (m_type == STRING)
+    {
+       return m_string_value == v.to_string(env);
+    }
     else if (m_type == BOOLEAN)
     {
        return m_boolean_value == v.to_bool();

Index: server/as_value.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.h,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- server/as_value.h   1 Jul 2007 10:54:20 -0000       1.56
+++ server/as_value.h   9 Jul 2007 03:30:50 -0000       1.57
@@ -15,7 +15,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

-/* $Id: as_value.h,v 1.56 2007/07/01 10:54:20 bjacques Exp $ */
+/* $Id: as_value.h,v 1.57 2007/07/09 03:30:50 strk Exp $ */

 #ifndef GNASH_AS_VALUE_H
 #define GNASH_AS_VALUE_H
@@ -521,6 +521,13 @@
        //
        /// See ECMA-262 abstract equality comparison (sect 11.9.3)
        ///
+       /// NOTE: these invariants should hold
+       ///
+       ///     - A != B is equivalent to ! ( A == B )
+       ///     - A == B is equivalent to B == A, except for order of
+       ///       evaluation of A and B.
+       ///
+       ///
        /// @param env
        ///     The environment to use for running the toString() method
        ///     for object values. If NULL, toString() won't be run.

Index: testsuite/actionscript.all/Number.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Number.as,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- testsuite/actionscript.all/Number.as        9 Jul 2007 01:59:42 -0000       
1.21
+++ testsuite/actionscript.all/Number.as        9 Jul 2007 03:30:50 -0000       
1.22
@@ -26,7 +26,7 @@
 // TODO: test with SWF target != 6 (the only one tested so far)
 //

-rcsid="$Id: Number.as,v 1.21 2007/07/09 01:59:42 strk Exp $";
+rcsid="$Id: Number.as,v 1.22 2007/07/09 03:30:50 strk Exp $";

 #include "check.as"

@@ -90,7 +90,7 @@
 check_equals( typeof(NaN), 'number' );
 check_equals( typeof(isNaN), 'function' );
 check_equals( typeof(isNaN(NaN)), 'boolean' );
-check(NaN != NaN);
+check(NaN != NaN); // TODO: this seems a bogus check, the check should 
actually return false
 check( isNaN(NaN) );
 check_equals( typeof(isNaN(0/0)), 'boolean' );
 check( isNaN(0/0) );
@@ -261,6 +261,9 @@
 // ActionNewAdd
 check_equals('0' + -1, '0-1');

+// string:00 number:0 equality
+check_equals('00', 0);
+
 check_equals(typeof(Number.prototype.valueOf), 'function');
 check_equals(typeof(Number.prototype.toString), 'function');
 #if OUTPUT_VERSION > 5


_______________________________________________
Gnash-commit mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/gnash-commit





reply via email to

[Prev in Thread] Current Thread [Next in Thread]