diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-11-30 19:03:53 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-11-30 19:03:53 +0900 |
commit | 28da2379c3b819088f0a503fcd0bfdd27ab40879 (patch) | |
tree | c887743ca9af92ec12c703678d329c21fb28ce51 /expr.cc | |
parent | 77be80dde684e25ba057dd5082d569178a4b2e39 (diff) | |
download | android_build_kati-28da2379c3b819088f0a503fcd0bfdd27ab40879.tar.gz android_build_kati-28da2379c3b819088f0a503fcd0bfdd27ab40879.tar.bz2 android_build_kati-28da2379c3b819088f0a503fcd0bfdd27ab40879.zip |
[C++] Explicitly disallow $(shell) in other make constructs
Diffstat (limited to 'expr.cc')
-rw-r--r-- | expr.cc | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -152,7 +152,9 @@ class VarRef : public Value { } virtual void Eval(Evaluator* ev, string* s) const override { + ev->IncrementEvalDepth(); const string&& name = name_->Eval(ev); + ev->DecrementEvalDepth(); Var* v = ev->LookupVar(Intern(name)); v->Eval(ev, s); } @@ -177,11 +179,13 @@ class VarSubst : public Value { } virtual void Eval(Evaluator* ev, string* s) const override { + ev->IncrementEvalDepth(); const string&& name = name_->Eval(ev); Var* v = ev->LookupVar(Intern(name)); - const string&& value = v->Eval(ev); const string&& pat_str = pat_->Eval(ev); const string&& subst = subst_->Eval(ev); + ev->DecrementEvalDepth(); + const string&& value = v->Eval(ev); WordWriter ww(s); Pattern pat(pat_str); for (StringPiece tok : WordScanner(value)) { @@ -216,7 +220,9 @@ class Func : public Value { virtual void Eval(Evaluator* ev, string* s) const override { LOG("Invoke func %s(%s)", name(), JoinValues(args_, ",").c_str()); + ev->IncrementEvalDepth(); fi_->func(args_, ev, s); + ev->DecrementEvalDepth(); } virtual string DebugString_() const override { |