diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-26 08:31:54 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-26 16:42:24 +0900 |
commit | 5d53bc72f71810b99f27489f9468c123386a9693 (patch) | |
tree | 812e2e925c08fd6ebec3898abc97f959617b6739 /func.cc | |
parent | 0f9cd97f589d2e3be3c58f5aa6bf4535b19a7615 (diff) | |
download | kati-5d53bc72f71810b99f27489f9468c123386a9693.tar.gz |
[C++] Fix parameter evaluation for $(call)
Diffstat (limited to 'func.cc')
-rw-r--r-- | func.cc | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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); } |