aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vmime/types.hpp7
-rw-r--r--src/vmime/word.cpp7
2 files changed, 10 insertions, 4 deletions
diff --git a/src/vmime/types.hpp b/src/vmime/types.hpp
index 12e5bf71..7e5b7ee8 100644
--- a/src/vmime/types.hpp
+++ b/src/vmime/types.hpp
@@ -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
diff --git a/src/vmime/word.cpp b/src/vmime/word.cpp
index 2229857c..1a70a785 100644
--- a/src/vmime/word.cpp
+++ b/src/vmime/word.cpp
@@ -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;