]> granicus.if.org Git - icinga2/commitdiff
Make sure all constructors properly initialize the ScriptFrame object
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 12 Aug 2016 09:42:59 +0000 (11:42 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 12 Aug 2016 09:42:59 +0000 (11:42 +0200)
refs #12408

lib/base/scriptframe.cpp
lib/base/scriptframe.hpp

index 8c5c7b14e1ce0d860a19abbc88dc8185fa8092ad..6ea697c77bdcbc88b43d69daaa9760352f19ee38 100644 (file)
@@ -27,6 +27,17 @@ boost::thread_specific_ptr<std::stack<ScriptFrame *> > ScriptFrame::m_ScriptFram
 
 ScriptFrame::ScriptFrame(void)
        : Locals(new Dictionary()), Self(ScriptGlobal::GetGlobals()), Sandboxed(false), Depth(0)
+{
+       InitializeFrame();
+}
+
+ScriptFrame::ScriptFrame(const Value& self)
+       : Locals(new Dictionary()), Self(self), Sandboxed(false), Depth(0)
+{
+       InitializeFrame();
+}
+
+void ScriptFrame::InitializeFrame(void)
 {
        std::stack<ScriptFrame *> *frames = m_ScriptFrames.get();
 
@@ -35,7 +46,9 @@ ScriptFrame::ScriptFrame(void)
 
                Sandboxed = frame->Sandboxed;
                Imports = frame->Imports;
-       } else {
+       }
+
+       if (!Imports) {
                Imports = new Array();
                Imports->Add(ScriptGlobal::Get("System"));
        }
@@ -43,12 +56,6 @@ ScriptFrame::ScriptFrame(void)
        PushFrame(this);
 }
 
-ScriptFrame::ScriptFrame(const Value& self)
-       : Locals(new Dictionary()), Self(self), Sandboxed(false), Depth(0)
-{
-       PushFrame(this);
-}
-
 ScriptFrame::~ScriptFrame(void)
 {
        ScriptFrame *frame = PopFrame();
index c0ceb3829a429f06abb23bf35d0f2ea2ea8dca0b..9827011a80c89c3e2fd23c1207308200c026f513 100644 (file)
@@ -51,6 +51,8 @@ private:
 
        inline static void PushFrame(ScriptFrame *frame);
        inline static ScriptFrame *PopFrame(void);
+
+       void InitializeFrame(void);
 };
 
 }