aboutsummaryrefslogtreecommitdiffstats
path: root/expr.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-11-30 19:03:53 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-11-30 19:03:53 +0900
commit28da2379c3b819088f0a503fcd0bfdd27ab40879 (patch)
treec887743ca9af92ec12c703678d329c21fb28ce51 /expr.cc
parent77be80dde684e25ba057dd5082d569178a4b2e39 (diff)
downloadandroid_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.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/expr.cc b/expr.cc
index e43d189..d0d3e38 100644
--- a/expr.cc
+++ b/expr.cc
@@ -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 {