diff options
author | Rouslan Solomakhin <rouslan@chromium.org> | 2014-07-19 19:52:08 +0000 |
---|---|---|
committer | Fredrik Roubert <roubert@google.com> | 2014-09-01 19:20:49 +0200 |
commit | 5b19a72fc80fdb5bb673d50c8b0b8f33772398bf (patch) | |
tree | 502acff075c1e246950825b761db5a538e8be3ea /cpp | |
parent | d1afaee9109dd9f73c4965a35cd11c91c7e1af25 (diff) | |
download | src-5b19a72fc80fdb5bb673d50c8b0b8f33772398bf.tar.gz |
Do not go past the end of an empty vector in CombineLinesForLanguage.
TBR=lararennie@google.com
Review URL: https://codereview.appspot.com/115120043
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/address_formatter.cc | 19 | ||||
-rw-r--r-- | cpp/test/address_formatter_test.cc | 7 |
2 files changed, 17 insertions, 9 deletions
diff --git a/cpp/src/address_formatter.cc b/cpp/src/address_formatter.cc index 0bf5c5d..3440288 100644 --- a/cpp/src/address_formatter.cc +++ b/cpp/src/address_formatter.cc @@ -108,16 +108,17 @@ std::string GetLineSeparatorForLanguage(const std::string& language_tag) { return kCommaSeparator; } -void CombineLinesForLanguage( - const std::vector<std::string>& lines, const std::string& language_tag, - std::string *line) { - if (lines.size() > 0) { - line->assign(lines[0]); - } +void CombineLinesForLanguage(const std::vector<std::string>& lines, + const std::string& language_tag, + std::string* line) { + line->clear(); std::string separator = GetLineSeparatorForLanguage(language_tag); - for (std::vector<std::string>::const_iterator it = lines.begin() + 1; - it < lines.end(); ++it) { - line->append(separator); + for (std::vector<std::string>::const_iterator it = lines.begin(); + it != lines.end(); + ++it) { + if (it != lines.begin()) { + line->append(separator); + } line->append(*it); } } diff --git a/cpp/test/address_formatter_test.cc b/cpp/test/address_formatter_test.cc index ca94a32..d20a344 100644 --- a/cpp/test/address_formatter_test.cc +++ b/cpp/test/address_formatter_test.cc @@ -28,6 +28,13 @@ using i18n::addressinput::GetFormattedNationalAddress; using i18n::addressinput::GetFormattedNationalAddressLine; using i18n::addressinput::GetStreetAddressLinesAsSingleLine; +TEST(AddressFormatterTest, GetStreetAddressLinesAsSingleLine_EmptyAddress) { + AddressData address; + std::string result; + GetStreetAddressLinesAsSingleLine(address, &result); + EXPECT_TRUE(result.empty()); +} + TEST(AddressFormatterTest, GetStreetAddressLinesAsSingleLine_1Line) { AddressData address; address.region_code = "US"; // Not used. |