[Top][All Lists]
[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;
- [Gnash-commit] gnash ChangeLog server/as_value.cpp,
Sandro Santilli <=