diff --git a/lib/base/dynamicobject.cpp b/lib/base/dynamicobject.cpp index 6b933ee0a..76e397dbc 100644 --- a/lib/base/dynamicobject.cpp +++ b/lib/base/dynamicobject.cpp @@ -31,6 +31,7 @@ #include "base/initialize.hpp" #include "base/scriptvariable.hpp" #include "base/workqueue.hpp" +#include "base/context.hpp" #include #include #include @@ -125,6 +126,8 @@ void DynamicObject::Start(void) void DynamicObject::Activate(void) { + CONTEXT("Activating object '" + GetName() + "' of type '" + GetType()->GetName() + "'"); + ASSERT(!OwnsLock()); Start(); @@ -152,6 +155,8 @@ void DynamicObject::Stop(void) void DynamicObject::Deactivate(void) { + CONTEXT("Deactivating object '" + GetName() + "' of type '" + GetType()->GetName() + "'"); + ASSERT(!OwnsLock()); SetAuthority(false); diff --git a/lib/base/value-operators.cpp b/lib/base/value-operators.cpp index 8eb689bd3..12e6f8f5c 100644 --- a/lib/base/value-operators.cpp +++ b/lib/base/value-operators.cpp @@ -131,6 +131,12 @@ bool Value::operator!=(const String& rhs) const bool Value::operator==(const Value& rhs) const { + if ((IsNumber() || IsEmpty()) && (rhs.IsNumber() || rhs.IsEmpty()) && !(IsEmpty() && rhs.IsEmpty())) + return static_cast(*this) == static_cast(rhs); + + if ((IsString() || IsEmpty()) && (rhs.IsString() || rhs.IsEmpty()) && !(IsEmpty() && rhs.IsEmpty())) + return static_cast(*this) == static_cast(rhs); + if (IsEmpty() != rhs.IsEmpty()) return false; @@ -162,12 +168,6 @@ bool Value::operator==(const Value& rhs) const return static_cast(*this) == static_cast(rhs); } - if ((IsNumber() || IsEmpty()) && (rhs.IsNumber() || rhs.IsEmpty()) && !(IsEmpty() && rhs.IsEmpty())) - return static_cast(*this) == static_cast(rhs); - - if ((IsString() || IsEmpty()) && (rhs.IsString() || rhs.IsEmpty()) && !(IsEmpty() && rhs.IsEmpty())) - return static_cast(*this) == static_cast(rhs); - return false; }