aboutsummaryrefslogtreecommitdiff
path: root/func.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-26 08:31:54 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-26 16:42:24 +0900
commit5d53bc72f71810b99f27489f9468c123386a9693 (patch)
tree812e2e925c08fd6ebec3898abc97f959617b6739 /func.cc
parent0f9cd97f589d2e3be3c58f5aa6bf4535b19a7615 (diff)
downloadkati-5d53bc72f71810b99f27489f9468c123386a9693.tar.gz
[C++] Fix parameter evaluation for $(call)
Diffstat (limited to 'func.cc')
-rw-r--r--func.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/func.cc b/func.cc
index 97e90cd..de8b9a1 100644
--- a/func.cc
+++ b/func.cc
@@ -421,14 +421,16 @@ void CallFunc(const vector<Value*>& args, Evaluator* ev, string* s) {
shared_ptr<string> func_name = args[0]->Eval(ev);
Var* func = ev->LookupVar(*func_name);
vector<unique_ptr<SimpleVar>> av;
- vector<unique_ptr<ScopedVar>> sv;
for (size_t i = 1; i < args.size(); i++) {
unique_ptr<SimpleVar> s(
new SimpleVar(args[i]->Eval(ev), VarOrigin::AUTOMATIC));
- sv.push_back(move(unique_ptr<ScopedVar>(
- new ScopedVar(ev->mutable_vars(), tmpvar_names[i], s.get()))));
av.push_back(move(s));
}
+ vector<unique_ptr<ScopedVar>> sv;
+ for (size_t i = 1; i < args.size(); i++) {
+ sv.push_back(move(unique_ptr<ScopedVar>(
+ new ScopedVar(ev->mutable_vars(), tmpvar_names[i], av[i-1].get()))));
+ }
func->Eval(ev, s);
}