diff options
author | Cole Faust <colefaust@google.com> | 2023-01-18 18:24:09 -0800 |
---|---|---|
committer | Cole Faust <colefaust@google.com> | 2023-01-18 18:24:09 -0800 |
commit | ee538935fc914663100eb3d181dc40277131c2f6 (patch) | |
tree | aa2db39b83ef1d53277c01deb797b762abc36ae0 | |
parent | ceabd6eede043fcdeb3e460837e513207419de10 (diff) | |
parent | 535ec5d0d6991e647087a8e411d737163a31603a (diff) | |
download | kati-ee538935fc914663100eb3d181dc40277131c2f6.tar.gz |
Merge remote-tracking branch 'aosp/upstream' into update_kati
* aosp/upstream:
Fix crash due to std::string_view change
Remove AppendString
Change-Id: Ic53c45ab9e39d378d44fbd8e35637a0be72ad34d
-rw-r--r-- | src/dep.cc | 5 | ||||
-rw-r--r-- | src/func.cc | 26 | ||||
-rw-r--r-- | src/regen.cc | 3 | ||||
-rw-r--r-- | src/strutil.cc | 23 | ||||
-rw-r--r-- | src/strutil.h | 2 |
5 files changed, 26 insertions, 33 deletions
@@ -39,10 +39,9 @@ namespace { static std::vector<std::unique_ptr<DepNode>> g_dep_node_pool; static Symbol ReplaceSuffix(Symbol s, Symbol newsuf) { - std::string r; - AppendString(StripExt(s.str()), &r); + std::string r{StripExt(s.str())}; r += '.'; - AppendString(newsuf.str(), &r); + r += newsuf.str(); return Intern(r); } diff --git a/src/func.cc b/src/func.cc index 4af6662..2345808 100644 --- a/src/func.cc +++ b/src/func.cc @@ -134,11 +134,11 @@ void SubstFunc(const std::vector<Value*>& args, Evaluator* ev, std::string* s) { size_t found = str.find(pat, index); if (found == std::string::npos) break; - AppendString(std::string_view(str).substr(index, found - index), s); - AppendString(repl, s); + s->append(std::string_view(str).substr(index, found - index)); + s->append(repl); index = found + pat.size(); } - AppendString(std::string_view(str).substr(index), s); + s->append(std::string_view(str).substr(index)); } void FindstringFunc(const std::vector<Value*>& args, @@ -147,7 +147,7 @@ void FindstringFunc(const std::vector<Value*>& args, const std::string&& find = args[0]->Eval(ev); const std::string&& in = args[1]->Eval(ev); if (in.find(find) != std::string::npos) - AppendString(find, s); + s->append(find); } void FilterFunc(const std::vector<Value*>& args, @@ -238,7 +238,7 @@ void WordFunc(const std::vector<Value*>& args, Evaluator* ev, std::string* s) { for (std::string_view tok : WordScanner(text)) { n--; if (n == 0) { - AppendString(tok, s); + s->append(tok); break; } } @@ -297,7 +297,7 @@ void FirstwordFunc(const std::vector<Value*>& args, WordScanner ws(text); auto begin = ws.begin(); if (begin != ws.end()) { - AppendString(*begin, s); + s->append(*begin); } } @@ -309,7 +309,7 @@ void LastwordFunc(const std::vector<Value*>& args, for (std::string_view tok : WordScanner(text)) { last = tok; } - AppendString(last, s); + s->append(last); } void JoinFunc(const std::vector<Value*>& args, Evaluator* ev, std::string* s) { @@ -322,8 +322,8 @@ void JoinFunc(const std::vector<Value*>& args, Evaluator* ev, std::string* s) { for (iter1 = ws1.begin(), iter2 = ws2.begin(); iter1 != ws1.end() && iter2 != ws2.end(); ++iter1, ++iter2) { ww.Write(*iter1); - // Use |AppendString| not to append extra ' '. - AppendString(*iter2, s); + // Use append to not append extra ' '. + s->append(*iter2); } for (; iter1 != ws1.end(); ++iter1) ww.Write(*iter1); @@ -413,7 +413,7 @@ void AddprefixFunc(const std::vector<Value*>& args, WordWriter ww(s); for (std::string_view tok : WordScanner(text)) { ww.Write(pre); - AppendString(tok, s); + s->append(tok); } } @@ -486,7 +486,7 @@ void OrFunc(const std::vector<Value*>& args, Evaluator* ev, std::string* s) { void ValueFunc(const std::vector<Value*>& args, Evaluator* ev, std::string* s) { const std::string&& var_name = args[0]->Eval(ev); Var* var = ev->LookupVar(Intern(var_name)); - AppendString(std::string(var->String()), s); + s->append(std::string(var->String())); } void EvalFunc(const std::vector<Value*>& args, Evaluator* ev, std::string*) { @@ -1003,8 +1003,8 @@ void VariableLocationFunc(const std::vector<Value*>& args, Var* v = ev->PeekVar(sym); const Loc& loc = v->Location(); ww.Write(loc.filename ? loc.filename : "<unknown>"); - AppendString(":", s); - AppendString(std::to_string(loc.lineno > 0 ? loc.lineno : 0), s); + s->append(":"); + s->append(std::to_string(loc.lineno > 0 ? loc.lineno : 0)); } } diff --git a/src/regen.cc b/src/regen.cc index 0f2bb1c..458c4cd 100644 --- a/src/regen.cc +++ b/src/regen.cc @@ -202,7 +202,8 @@ class StampChecker { int num_envs = LOAD_INT(fp); for (int i = 0; i < num_envs; i++) { LOAD_STRING(fp, &s); - std::string_view val(getenv(s.c_str())); + const char* val_c_str = getenv(s.c_str()); + std::string_view val(val_c_str ? val_c_str : ""); LOAD_STRING(fp, &s2); if (val != s2) { if (g_flags.dump_kati_stamp) { diff --git a/src/strutil.cc b/src/strutil.cc index ff240ae..0a222ad 100644 --- a/src/strutil.cc +++ b/src/strutil.cc @@ -93,7 +93,7 @@ void WordWriter::MaybeAddWhitespace() { void WordWriter::Write(std::string_view s) { MaybeAddWhitespace(); - AppendString(s, out_); + out_->append(s); } ScopedTerminator::ScopedTerminator(std::string_view s) @@ -105,10 +105,6 @@ ScopedTerminator::~ScopedTerminator() { const_cast<char*>(s_.data())[s_.size()] = c_; } -void AppendString(std::string_view str, std::string* out) { - out->append(str.begin(), str.end()); -} - bool HasPrefix(std::string_view str, std::string_view prefix) { ssize_t size_diff = str.size() - prefix.size(); return size_diff >= 0 && str.substr(0, prefix.size()) == prefix; @@ -170,10 +166,10 @@ void Pattern::AppendSubst(std::string_view str, std::string* out) const { if (percent_index_ == std::string::npos) { if (str == pat_) { - AppendString(subst, out); + out->append(subst); return; } else { - AppendString(str, out); + out->append(str); return; } } @@ -181,17 +177,16 @@ void Pattern::AppendSubst(std::string_view str, if (MatchImpl(str)) { size_t subst_percent_index = subst.find('%'); if (subst_percent_index == std::string::npos) { - AppendString(subst, out); + out->append(subst); return; } else { - AppendString(subst.substr(0, subst_percent_index), out); - AppendString(str.substr(percent_index_, str.size() - pat_.size() + 1), - out); - AppendString(subst.substr(subst_percent_index + 1), out); + out->append(subst.substr(0, subst_percent_index)); + out->append(str.substr(percent_index_, str.size() - pat_.size() + 1)); + out->append(subst.substr(subst_percent_index + 1)); return; } } - AppendString(str, out); + out->append(str); } void Pattern::AppendSubstRef(std::string_view str, @@ -351,7 +346,7 @@ void AbsPath(std::string_view s, std::string* o) { *o = buf; *o += '/'; } - AppendString(s, o); + o->append(s); NormalizePath(o); } diff --git a/src/strutil.h b/src/strutil.h index fe35d5e..e199e14 100644 --- a/src/strutil.h +++ b/src/strutil.h @@ -78,8 +78,6 @@ inline std::string JoinStrings(std::vector<String> v, const char* sep) { return r; } -void AppendString(std::string_view str, std::string* out); - bool HasPrefix(std::string_view str, std::string_view prefix); bool HasSuffix(std::string_view str, std::string_view suffix); |