aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Faust <colefaust@google.com>2023-01-18 18:24:09 -0800
committerCole Faust <colefaust@google.com>2023-01-18 18:24:09 -0800
commitee538935fc914663100eb3d181dc40277131c2f6 (patch)
treeaa2db39b83ef1d53277c01deb797b762abc36ae0
parentceabd6eede043fcdeb3e460837e513207419de10 (diff)
parent535ec5d0d6991e647087a8e411d737163a31603a (diff)
downloadkati-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.cc5
-rw-r--r--src/func.cc26
-rw-r--r--src/regen.cc3
-rw-r--r--src/strutil.cc23
-rw-r--r--src/strutil.h2
5 files changed, 26 insertions, 33 deletions
diff --git a/src/dep.cc b/src/dep.cc
index 5ba59fe..0391cb7 100644
--- a/src/dep.cc
+++ b/src/dep.cc
@@ -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);