aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2006-01-10 19:23:05 +0000
committerVincent Richard <[email protected]>2006-01-10 19:23:05 +0000
commit98204ed8468264f7d6683fef1759aa2ec005077c (patch)
tree8d33b3c0dee0ad735895d38d83c4e2f39a0d5330
parentFixed segfault when dynamic-casting a ref (thanks to Benjamin Biron). (diff)
downloadvmime-98204ed8468264f7d6683fef1759aa2ec005077c.tar.gz
vmime-98204ed8468264f7d6683fef1759aa2ec005077c.zip
Fixed bug when fetching structure.
-rw-r--r--src/net/maildir/maildirMessage.cpp38
1 files changed, 25 insertions, 13 deletions
diff --git a/src/net/maildir/maildirMessage.cpp b/src/net/maildir/maildirMessage.cpp
index acba0c3a..c8d3f7df 100644
--- a/src/net/maildir/maildirMessage.cpp
+++ b/src/net/maildir/maildirMessage.cpp
@@ -78,6 +78,8 @@ public:
const int getBodyParsedOffset() const { return (m_bodyParsedOffset); }
const int getBodyParsedLength() const { return (m_bodyParsedLength); }
+ void initStructure(const bodyPart& part);
+
private:
ref <maildirStructure> m_structure;
@@ -111,15 +113,21 @@ public:
maildirStructure(weak_ref <maildirPart> parent, const bodyPart& part)
{
- m_parts.push_back(vmime::create <maildirPart>(parent, 0, part));
+ vmime::ref <maildirPart> mpart = vmime::create <maildirPart>(parent, 0, part);
+ mpart->initStructure(part);
+
+ m_parts.push_back(mpart);
}
maildirStructure(weak_ref <maildirPart> parent, const std::vector <ref <const vmime::bodyPart> >& list)
{
- int number = 0;
-
for (unsigned int i = 0 ; i < list.size() ; ++i)
- m_parts.push_back(vmime::create <maildirPart>(parent, number, *list[i]));
+ {
+ vmime::ref <maildirPart> mpart = vmime::create <maildirPart>(parent, i, *list[i]);
+ mpart->initStructure(*list[i]);
+
+ m_parts.push_back(mpart);
+ }
}
@@ -159,15 +167,6 @@ ref <maildirStructure> maildirStructure::m_emptyStructure = vmime::create <maild
maildirPart::maildirPart(weak_ref <maildirPart> parent, const int number, const bodyPart& part)
: m_parent(parent), m_header(NULL), m_number(number)
{
- if (part.getBody()->getPartList().size() == 0)
- m_structure = NULL;
- else
- {
- m_structure = vmime::create <maildirStructure>
- (thisWeakRef().dynamicCast <maildirPart>(),
- part.getBody()->getPartList());
- }
-
m_headerParsedOffset = part.getHeader()->getParsedOffset();
m_headerParsedLength = part.getHeader()->getParsedLength();
@@ -185,6 +184,19 @@ maildirPart::~maildirPart()
}
+void maildirPart::initStructure(const bodyPart& part)
+{
+ if (part.getBody()->getPartList().size() == 0)
+ m_structure = NULL;
+ else
+ {
+ m_structure = vmime::create <maildirStructure>
+ (thisWeakRef().dynamicCast <maildirPart>(),
+ part.getBody()->getPartList());
+ }
+}
+
+
ref <const structure> maildirPart::getStructure() const
{
if (m_structure != NULL)