gnash-commit
[Top][All Lists]
Advanced

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

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


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_value.cpp
Date: Mon, 23 Oct 2006 10:35:31 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/10/23 10:35:31

Modified files:
        .              : ChangeLog 
        server         : as_value.cpp 

Log message:
        * server/as_value.cpp: (operator==): fix handling of object/non-object 
comparison (when object is first operand).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1355&r2=1.1356
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.7&r2=1.8

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1355
retrieving revision 1.1356
diff -u -b -r1.1355 -r1.1356
--- ChangeLog   23 Oct 2006 10:32:56 -0000      1.1355
+++ ChangeLog   23 Oct 2006 10:35:31 -0000      1.1356
@@ -1,5 +1,7 @@
 2006-10-23 Sandro Santilli <address@hidden>
 
+       * server/as_value.cpp: (operator==): fix handling of object/non-object
+       comparison (when object is first operand).
        * server/asobj/Number.cpp: override get_numeric_value().
        * server/as_object.h: added get_numeric_value() virtual
        method (convert to number).

Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- server/as_value.cpp 22 Aug 2006 21:32:02 -0000      1.7
+++ server/as_value.cpp 23 Oct 2006 10:35:31 -0000      1.8
@@ -407,21 +407,45 @@
 {
     bool this_nulltype = (m_type == UNDEFINED || m_type == NULLTYPE);
     bool v_nulltype = (v.get_type() == UNDEFINED || v.get_type() == NULLTYPE);
-    if (this_nulltype || v_nulltype) {
+    if (this_nulltype || v_nulltype)
+    {
        return this_nulltype == v_nulltype;
-    } else if (m_type == STRING) {
+    }
+    else if (m_type == STRING)
+    {
        return m_string_value == v.to_tu_string();
-    } else if (m_type == NUMBER) {
+    }
+    else if (m_type == NUMBER)
+    {
        return m_number_value == v.to_number();
-    } else if (m_type == BOOLEAN) {
+    }
+    else if (m_type == BOOLEAN)
+    {
        return m_boolean_value == v.to_bool();
-    } else if (m_type == OBJECT) {
-       return m_object_value == v.to_object();
-    } else if (m_type == AS_FUNCTION) {
-       return m_as_function_value == v.to_object();
-    } else if (m_type == C_FUNCTION) {
-       return m_c_function_value == v.to_c_function();
-    } else {
+
+    }
+    else if (is_object())
+    {
+       if ( v.is_object() )
+       {
+               // compare by reference
+               return to_object() == v.to_object();
+       }
+       else
+       {
+               // convert this value to a primitive and recurse
+               // TODO: implement ``as_value as_value::to_primitive() const''
+               //return to_primitive() == v;
+
+               // to_primitive is not implemented yet, so
+               // we force conversion to a number
+               // (might as well force conversion to a string though...)
+               return as_value(to_number()) == v;
+       }
+    }
+    else
+    {
+       assert(0);
        // Evan: what about objects???
        // TODO
        return m_type == v.m_type;




reply via email to

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