diff options
author | Vincent Richard <[email protected]> | 2015-01-13 21:04:20 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2015-01-13 21:04:20 +0000 |
commit | 8d46091533d2f6b3dab669f2453d296c622e5003 (patch) | |
tree | d6caf134338cf490960390acaa5610674df685b7 | |
parent | Fixed build issues when disabling messaging features. (diff) | |
download | vmime-8d46091533d2f6b3dab669f2453d296c622e5003.tar.gz vmime-8d46091533d2f6b3dab669f2453d296c622e5003.zip |
Fixed possible memory leak.
-rw-r--r-- | src/vmime/types.hpp | 7 | ||||
-rw-r--r-- | src/vmime/word.cpp | 7 |
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; |