summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/messaging/AddressParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/messaging/AddressParser.cpp')
-rw-r--r--cpp/src/qpid/messaging/AddressParser.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/cpp/src/qpid/messaging/AddressParser.cpp b/cpp/src/qpid/messaging/AddressParser.cpp
index b6d5f764cf..c34c9c0f56 100644
--- a/cpp/src/qpid/messaging/AddressParser.cpp
+++ b/cpp/src/qpid/messaging/AddressParser.cpp
@@ -94,7 +94,7 @@ bool AddressParser::readList(Variant& value)
void AddressParser::readListItems(Variant::List& list)
{
Variant item;
- while (readValue(item)) {
+ while (readValueIfExists(item)) {
list.push_back(item);
if (!readChar(',')) break;
}
@@ -139,8 +139,13 @@ bool AddressParser::readKey(std::string& key)
bool AddressParser::readValue(Variant& value)
{
+ return readValueIfExists(value) || error("Expected value");
+}
+
+bool AddressParser::readValueIfExists(Variant& value)
+{
return readSimpleValue(value) || readQuotedValue(value) ||
- readMap(value) || readList(value) || error("Expected value");
+ readMap(value) || readList(value);
}
bool AddressParser::readString(std::string& value, char delimiter)