From 29954e5e50e5668a5f38f944573b9be6401ed433 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Wed, 16 Oct 2013 19:47:24 +0200 Subject: Fixed group parsing in mailboxList. --- src/mailboxList.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/mailboxList.cpp') diff --git a/src/mailboxList.cpp b/src/mailboxList.cpp index 03a225f8..f0f40ca8 100644 --- a/src/mailboxList.cpp +++ b/src/mailboxList.cpp @@ -22,6 +22,7 @@ // #include "vmime/mailboxList.hpp" +#include "vmime/mailboxGroup.hpp" #include "vmime/exception.hpp" @@ -200,7 +201,36 @@ void mailboxList::parseImpl (const parsingContext& ctx, const string& buffer, const string::size_type position, const string::size_type end, string::size_type* newPosition) { - m_list.parse(ctx, buffer, position, end, newPosition); + m_list.removeAllAddresses(); + + string::size_type pos = position; + + while (pos < end) + { + ref
parsedAddress = address::parseNext(ctx, buffer, pos, end, &pos, NULL); + + if (parsedAddress != NULL) + { + if (parsedAddress->isGroup()) + { + ref group = parsedAddress.staticCast (); + + for (size_t i = 0 ; i < group->getMailboxCount() ; ++i) + { + m_list.appendAddress(group->getMailboxAt(i)); + } + } + else + { + m_list.appendAddress(parsedAddress); + } + } + } + + setParsedBounds(position, end); + + if (newPosition) + *newPosition = end; } -- cgit