From 4f972bcf67826591423149c006f80d43a026bd15 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Mon, 3 Nov 2014 09:13:30 -0700 Subject: [PATCH] Refine lifetime of parameters to functions Fixes crash caused when making function calls in a global context, and probably fixes other things. --- include/chaiscript/language/chaiscript_eval.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/chaiscript/language/chaiscript_eval.hpp b/include/chaiscript/language/chaiscript_eval.hpp index c095c23..36978ab 100644 --- a/include/chaiscript/language/chaiscript_eval.hpp +++ b/include/chaiscript/language/chaiscript_eval.hpp @@ -292,6 +292,7 @@ namespace chaiscript virtual ~Inplace_Fun_Call_AST_Node() {} virtual Boxed_Value eval_internal(chaiscript::detail::Dispatch_Engine &t_ss) const CHAISCRIPT_OVERRIDE{ std::vector params; + chaiscript::eval::detail::Function_Push_Pop fpp(t_ss); if ((this->children.size() > 1) && (this->children[1]->identifier == AST_Node_Type::Arg_List)) { for (const auto &child : this->children[1]->children) { @@ -595,10 +596,10 @@ namespace chaiscript virtual ~Dot_Access_AST_Node() {} virtual Boxed_Value eval_internal(chaiscript::detail::Dispatch_Engine &t_ss) const CHAISCRIPT_OVERRIDE{ Boxed_Value retval = this->children[0]->eval(t_ss); + chaiscript::eval::detail::Function_Push_Pop fpp(t_ss); if (this->children.size() > 1) { for (size_t i = 2; i < this->children.size(); i+=2) { - chaiscript::eval::detail::Function_Push_Pop fpp(t_ss); std::vector params{retval}; if (this->children[i]->children.size() > 1) {