diff options
author | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-20 23:54:29 +0000 |
---|---|---|
committer | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-20 23:54:29 +0000 |
commit | 65b10ba080448288f0fa625d71dc6c42c9b3a67d (patch) | |
tree | af05e7289d8b79eacbb01c2a4b7b44bbedc61a29 /base/string_util.cc | |
parent | b94193b72ff5c34d87f0b65df00587eaee2bdf7a (diff) | |
download | chromium_src-65b10ba080448288f0fa625d71dc6c42c9b3a67d.zip chromium_src-65b10ba080448288f0fa625d71dc6c42c9b3a67d.tar.gz chromium_src-65b10ba080448288f0fa625d71dc6c42c9b3a67d.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.
Review URL: http://codereview.chromium.org/6877008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82405 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/string_util.cc')
-rw-r--r-- | base/string_util.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/base/string_util.cc b/base/string_util.cc index 1ad9abe..0cbb25f 100644 --- a/base/string_util.cc +++ b/base/string_util.cc @@ -831,7 +831,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(); @@ -856,7 +855,14 @@ OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string, } --i; } else { - uintptr_t index = *i - '1'; + uintptr_t index = 0; + while ('0' <= *i && '9' >= *i) { + index *= 10; + index += *i - '0'; + ++i; + } + --i; + index -= 1; if (offsets) { ReplacementOffset r_offset(index, static_cast<int>(formatted.size())); |