From 9df44078b87785f114689fc0b12e084aba903df0 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Fri, 8 May 2015 09:16:01 +0200 Subject: [PATCH] Fixed estimation of generated size when no re-encoding is needed. --- src/vmime/body.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vmime/body.cpp b/src/vmime/body.cpp index 8f5401cf..8b334352 100644 --- a/src/vmime/body.cpp +++ b/src/vmime/body.cpp @@ -544,10 +544,18 @@ size_t body::getGeneratedSize(const generationContext& ctx) // Simple body else { - shared_ptr srcEncoder = m_contents->getEncoding().getEncoder(); - shared_ptr dstEncoder = getEncoding().getEncoder(); + if (getEncoding() == m_contents->getEncoding()) + { + // No re-encoding has to be performed + return m_contents->getLength(); + } + else + { + shared_ptr srcEncoder = m_contents->getEncoding().getEncoder(); + shared_ptr dstEncoder = getEncoding().getEncoder(); - return dstEncoder->getEncodedSize(srcEncoder->getDecodedSize(m_contents->getLength())); + return dstEncoder->getEncodedSize(srcEncoder->getDecodedSize(m_contents->getLength())); + } } }