summaryrefslogtreecommitdiffstats
path: root/base/string_util.cc
diff options
context:
space:
mode:
authortony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-07 20:22:22 +0000
committertony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-07 20:22:22 +0000
commit55b77cebaa7f65d3943bf0b935e3ca9f423e6493 (patch)
tree5f51a6ca0174adaab802d8ab8e27dc17eea267aa /base/string_util.cc
parent96f13cbfb77efda5fbf493c494a117fac985523e (diff)
downloadchromium_src-55b77cebaa7f65d3943bf0b935e3ca9f423e6493.zip
chromium_src-55b77cebaa7f65d3943bf0b935e3ca9f423e6493.tar.gz
chromium_src-55b77cebaa7f65d3943bf0b935e3ca9f423e6493.tar.bz2
Support more than 9 arguments for ReplaceStringPlaceholders()
- support more than 9 arguments ($1, $2, $3, ..., $9 and $10, $11, $12, ...) for ReplaceStringPlaceholders() - add the unittest named ReplaceStringPlaceholdersMoreThan9Replacements for testing more than 9 arguments for ReplaceStringPlaceholders() BUG=16963 TEST=string_util_unittest:StringUtilTest.ReplaceStringPlaceholdersMoreThan9Replacements Patch by haraken@google.com. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=82405 Review URL: http://codereview.chromium.org/6877008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88190 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/string_util.cc')
-rw-r--r--base/string_util.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/base/string_util.cc b/base/string_util.cc
index 9582f4b..81b9ee7 100644
--- a/base/string_util.cc
+++ b/base/string_util.cc
@@ -815,7 +815,6 @@ template<class FormatStringType, class OutStringType>
OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string,
const std::vector<OutStringType>& subst, std::vector<size_t>* offsets) {
size_t substitutions = subst.size();
- DCHECK(substitutions < 10);
size_t sub_length = 0;
for (typename std::vector<OutStringType>::const_iterator iter = subst.begin();
@@ -840,7 +839,14 @@ OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string,
}
--i;
} else {
- uintptr_t index = *i - '1';
+ uintptr_t index = 0;
+ while (i != format_string.end() && '0' <= *i && *i <= '9') {
+ index *= 10;
+ index += *i - '0';
+ ++i;
+ }
+ --i;
+ index -= 1;
if (offsets) {
ReplacementOffset r_offset(index,
static_cast<int>(formatted.size()));