diff options
| author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-16 17:51:23 +0900 |
|---|---|---|
| committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-18 11:25:43 +0900 |
| commit | f91d6820fdc11553a5f8575bcb3afc75a9ed6e06 (patch) | |
| tree | b9030c1800f31ea967d1b547252265d5e9bc577d /strutil.cc | |
| parent | 63e68fc5eea4e7b5366aba9db85b24d3655ead88 (diff) | |
[C++] Fix strutil implementations
Diffstat (limited to 'strutil.cc')
| -rw-r--r-- | strutil.cc | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -81,7 +81,7 @@ void AppendString(StringPiece str, string* out) { bool HasPrefix(StringPiece str, StringPiece prefix) { ssize_t size_diff = str.size() - prefix.size(); - return size_diff >= 0 && str.substr(0, size_diff) == prefix; + return size_diff >= 0 && str.substr(0, prefix.size()) == prefix; } bool HasSuffix(StringPiece str, StringPiece suffix) { @@ -110,7 +110,7 @@ void AppendSubstPattern(StringPiece str, StringPiece pat, StringPiece subst, } if (HasPrefix(str, pat.substr(0, pat_percent_index)) && - HasPrefix(str, pat.substr(pat_percent_index + 1))) { + HasSuffix(str, pat.substr(pat_percent_index + 1))) { size_t subst_percent_index = subst.find('%'); if (subst_percent_index == string::npos) { AppendString(subst, out); @@ -118,7 +118,7 @@ void AppendSubstPattern(StringPiece str, StringPiece pat, StringPiece subst, } else { AppendString(subst.substr(0, subst_percent_index), out); AppendString(str.substr(pat_percent_index, - str.size() - pat_percent_index - 1), out); + str.size() - pat.size() + 1), out); AppendString(subst.substr(subst_percent_index + 1), out); return; } @@ -128,8 +128,10 @@ void AppendSubstPattern(StringPiece str, StringPiece pat, StringPiece subst, void AppendSubstRef(StringPiece str, StringPiece pat, StringPiece subst, string* out) { - if (pat.find('%') != string::npos && subst.find('%') != string::npos) + if (pat.find('%') != string::npos && subst.find('%') != string::npos) { AppendSubstPattern(pat, subst, str, out); + return; + } StringPiece s = TrimSuffix(str, pat); out->append(s.begin(), s.end()); out->append(subst.begin(), subst.end()); |
