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.
 	  *
openSUSE Build Service is sponsored by