aboutsummaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorRouslan Solomakhin <rouslan@chromium.org>2014-07-19 19:52:08 +0000
committerFredrik Roubert <roubert@google.com>2014-09-01 19:20:49 +0200
commit5b19a72fc80fdb5bb673d50c8b0b8f33772398bf (patch)
tree502acff075c1e246950825b761db5a538e8be3ea /cpp
parentd1afaee9109dd9f73c4965a35cd11c91c7e1af25 (diff)
downloadsrc-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.cc19
-rw-r--r--cpp/test/address_formatter_test.cc7
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.