From d86767e8e3efb62e7657b1fc86ff3f4219cdba20 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Fri, 19 Apr 2013 14:59:38 +0200 Subject: [PATCH] Fix memory leak in the StdioStream class. --- lib/base/stdiostream.cpp | 9 ++++++++- lib/base/stdiostream.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/base/stdiostream.cpp b/lib/base/stdiostream.cpp index 959e377dc..ec4cf4d0c 100644 --- a/lib/base/stdiostream.cpp +++ b/lib/base/stdiostream.cpp @@ -34,6 +34,11 @@ StdioStream::StdioStream(std::iostream *innerStream, bool ownsStream) : m_InnerStream(innerStream), m_OwnsStream(ownsStream) { } +StdioStream::~StdioStream(void) +{ + Close(); +} + size_t StdioStream::Read(void *buffer, size_t size) { ObjectLock olock(this); @@ -51,6 +56,8 @@ void StdioStream::Write(const void *buffer, size_t size) void StdioStream::Close(void) { - if (m_OwnsStream) + if (m_OwnsStream) { delete m_InnerStream; + m_OwnsStream = false; + } } diff --git a/lib/base/stdiostream.h b/lib/base/stdiostream.h index fdd544f73..9e5b48b5a 100644 --- a/lib/base/stdiostream.h +++ b/lib/base/stdiostream.h @@ -33,6 +33,7 @@ public: typedef weak_ptr WeakPtr; StdioStream(std::iostream *innerStream, bool ownsStream); + ~StdioStream(void); virtual size_t Read(void *buffer, size_t size); virtual void Write(const void *buffer, size_t size); -- 2.40.0