]> granicus.if.org Git - icinga2/commitdiff
Remove unnecessary Dictionary::Contains calls
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 16 Aug 2016 20:03:30 +0000 (22:03 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 16 Aug 2016 20:03:42 +0000 (22:03 +0200)
fixes #12457

lib/base/configobject.cpp
lib/base/scriptglobal.cpp

index 7f4887b70034eb33c4160c874f20557d14cd4fdf..148ff0ea420f02d107e1ca8d278b88c9f0556a9b 100644 (file)
@@ -159,11 +159,9 @@ void ConfigObject::ModifyAttribute(const String& attr, const Value& value, bool
                        const String& key = tokens[i];
                        prefix += "." + key;
 
-                       if (!dict->Contains(key)) {
+                       if (!dict->Get(key, &current)) {
                                current = new Dictionary();
                                dict->Set(key, current);
-                       } else {
-                               current = dict->Get(key);
                        }
                }
 
index d1dd2687111d83084501161a031aba1bc1630a4e..48a1d66549329cbb4773487fae8d6bc3782f7c96 100644 (file)
@@ -36,14 +36,16 @@ Dictionary::Ptr ScriptGlobal::m_Globals = new Dictionary();
 
 Value ScriptGlobal::Get(const String& name, const Value *defaultValue)
 {
-       if (!m_Globals->Contains(name)) {
+       Value result;
+
+       if (!m_Globals->Get(name, &result)) {
                if (defaultValue)
                        return *defaultValue;
 
                BOOST_THROW_EXCEPTION(std::invalid_argument("Tried to access undefined script variable '" + name + "'"));
        }
 
-       return m_Globals->Get(name);
+       return result;
 }
 
 void ScriptGlobal::Set(const String& name, const Value& value)
@@ -63,12 +65,14 @@ void ScriptGlobal::Set(const String& name, const Value& value)
                        const String& token = tokens[i];
 
                        if (i + 1 != tokens.size()) {
-                               if (!parent->Contains(token)) {
+                               Value vparent;
+
+                               if (!parent->Get(token, &vparent)) {
                                        Dictionary::Ptr dict = new Dictionary();
                                        parent->Set(token, dict);
                                        parent = dict;
                                } else {
-                                       parent = parent->Get(token);
+                                       parent = vparent;
                                }
                        }
                }