aboutsummaryrefslogtreecommitdiff
path: root/exec.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-24 22:08:30 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-25 17:51:01 +0900
commita4d0ecb979db4a85dd3e62e76619854cd66dd0c1 (patch)
tree641eda31f25b67b0dc8bcbee99beab3e991e09f5 /exec.cc
parentb3af68b02c9e569be81e13e910d61ce6e979bb19 (diff)
downloadkati-a4d0ecb979db4a85dd3e62e76619854cd66dd0c1.tar.gz
[C++] Fix empty_line_in_define.mk
Diffstat (limited to 'exec.cc')
-rw-r--r--exec.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/exec.cc b/exec.cc
index fb0ade7..a3e8dc9 100644
--- a/exec.cc
+++ b/exec.cc
@@ -169,23 +169,29 @@ class Executor {
ev_->set_current_scope(n->rule_vars);
current_dep_node_ = n;
for (Value* v : n->cmds) {
- shared_ptr<string> cmd = v->Eval(ev_);
- if (TrimSpace(*cmd) == "")
+ shared_ptr<string> cmds_buf = v->Eval(ev_);
+ StringPiece cmds = *cmds_buf;
+ if (TrimSpace(cmds) == "")
continue;
while (true) {
- size_t index = cmd->find('\n');
+ size_t index = cmds.find('\n');
if (index == string::npos)
break;
+ StringPiece cmd = TrimLeftSpace(cmds.substr(0, index));
+ cmds = cmds.substr(index + 1);
+ if (cmd.empty())
+ continue;
Runner* runner = new Runner;
runner->output = n->output;
- runner->cmd = make_shared<string>(cmd->substr(0, index));
+ runner->cmd = make_shared<string>(cmd.as_string());
runners->push_back(runner);
- cmd = make_shared<string>(cmd->substr(index + 1));
}
+ if (cmds.empty())
+ continue;
Runner* runner = new Runner;
runner->output = n->output;
- runner->cmd = cmd;
+ runner->cmd = make_shared<string>(cmds.as_string());
runners->push_back(runner);
continue;
}