Fixed possible memory leak.
This commit is contained in:
parent
3806122a35
commit
8d46091533
@ -49,6 +49,7 @@
|
||||
#include <boost/make_shared.hpp>
|
||||
#include <boost/enable_shared_from_this.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
#define VMIME_SHARED_PTR_NAMESPACE boost
|
||||
#else
|
||||
@ -73,6 +74,12 @@ namespace vmime
|
||||
{
|
||||
void operator()(T*) const {}
|
||||
};
|
||||
|
||||
#if VMIME_SHARED_PTR_USE_CXX
|
||||
template <typename T> using scoped_ptr = std::unique_ptr <T>;
|
||||
#else
|
||||
using VMIME_SHARED_PTR_NAMESPACE::scoped_ptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
#undef VMIME_SHARED_PTR_NAMESPACE
|
||||
|
@ -287,17 +287,17 @@ void word::parseImpl
|
||||
const string::const_iterator dataEnd = p;
|
||||
p += 2; // skip '?='
|
||||
|
||||
utility::encoder::encoder* theEncoder = NULL;
|
||||
scoped_ptr <utility::encoder::encoder> theEncoder;
|
||||
|
||||
// Base-64 encoding
|
||||
if (*encPos == 'B' || *encPos == 'b')
|
||||
{
|
||||
theEncoder = new utility::encoder::b64Encoder();
|
||||
theEncoder.reset(new utility::encoder::b64Encoder());
|
||||
}
|
||||
// Quoted-Printable encoding
|
||||
else if (*encPos == 'Q' || *encPos == 'q')
|
||||
{
|
||||
theEncoder = new utility::encoder::qpEncoder();
|
||||
theEncoder.reset(new utility::encoder::qpEncoder());
|
||||
theEncoder->getProperties()["rfc2047"] = true;
|
||||
}
|
||||
|
||||
@ -325,7 +325,6 @@ void word::parseImpl
|
||||
utility::outputStreamStringAdapter eout(decodedBuffer);
|
||||
|
||||
theEncoder->decode(ein, eout);
|
||||
delete (theEncoder);
|
||||
|
||||
m_buffer = decodedBuffer;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user