File 10-vmime-backport-mailboxList-parser-29954e5.diff of Package libvmime_zarafa7
---
src/mailboxList.cpp | 30 +++++++++++++++++++++++++++++-
vmime/address.hpp | 1 -
2 files changed, 29 insertions(+), 2 deletions(-)
Index: vmime/src/mailboxList.cpp
===================================================================
--- vmime.orig/src/mailboxList.cpp
+++ vmime/src/mailboxList.cpp
@@ -22,6 +22,7 @@
//
#include "vmime/mailboxList.hpp"
+#include "vmime/mailboxGroup.hpp"
#include "vmime/exception.hpp"
@@ -199,7 +200,34 @@ const std::vector <ref <const component>
void mailboxList::parse(const string& buffer, const string::size_type position,
const string::size_type end, string::size_type* newPosition)
{
- m_list.parse(buffer, position, end, newPosition);
+ string::size_type pos = position;
+
+ while (pos < end)
+ {
+ ref <address> parsedAddress = address::parseNext(buffer, pos, end, &pos);
+
+ if (parsedAddress != NULL)
+ {
+ if (parsedAddress->isGroup())
+ {
+ ref <mailboxGroup> group = parsedAddress.staticCast <mailboxGroup>();
+
+ 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;
}
Index: vmime/vmime/address.hpp
===================================================================
--- vmime.orig/vmime/address.hpp
+++ vmime/vmime/address.hpp
@@ -65,7 +65,6 @@ public:
virtual ref <component> clone() const = 0;
-protected:
/** Parse an address from an input buffer.
*