diff --git a/lib/base/namespace.cpp b/lib/base/namespace.cpp index d80220087..c02ac95e6 100644 --- a/lib/base/namespace.cpp +++ b/lib/base/namespace.cpp @@ -20,6 +20,8 @@ Namespace::Namespace(NamespaceBehavior *behavior) Value Namespace::Get(const String& field) const { + ObjectLock olock(this); + Value value; if (!GetOwnField(field, &value)) BOOST_THROW_EXCEPTION(ScriptError("Namespace does not contain field '" + field + "'")); @@ -28,6 +30,8 @@ Value Namespace::Get(const String& field) const bool Namespace::Get(const String& field, Value *value) const { + ObjectLock olock(this); + auto nsVal = GetAttribute(field); if (!nsVal) @@ -39,16 +43,22 @@ bool Namespace::Get(const String& field, Value *value) const void Namespace::Set(const String& field, const Value& value, bool overrideFrozen) { + ObjectLock olock(this); + return SetFieldByName(field, value, overrideFrozen, DebugInfo()); } bool Namespace::Contains(const String& field) const { + ObjectLock olock(this); + return HasOwnField(field); } void Namespace::Remove(const String& field, bool overrideFrozen) { + ObjectLock olock(this); + m_Behavior->Remove(this, field, overrideFrozen); } @@ -86,6 +96,8 @@ void Namespace::SetAttribute(const String& key, const std::shared_ptr