diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-24 22:08:30 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-25 17:51:01 +0900 |
commit | a4d0ecb979db4a85dd3e62e76619854cd66dd0c1 (patch) | |
tree | 641eda31f25b67b0dc8bcbee99beab3e991e09f5 /exec.cc | |
parent | b3af68b02c9e569be81e13e910d61ce6e979bb19 (diff) | |
download | kati-a4d0ecb979db4a85dd3e62e76619854cd66dd0c1.tar.gz |
[C++] Fix empty_line_in_define.mk
Diffstat (limited to 'exec.cc')
-rw-r--r-- | exec.cc | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -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; } |