X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a10ea8b13fd0851e71e6fa5ebbe5b93933be11e..639e001d875797ec81217f6a9b8cd93285b02e80:/src/common/stream.cpp?ds=sidebyside diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 435b60f266..f13da0d3d8 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -22,20 +22,20 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ - #pragma hdrstop + #pragma hdrstop #endif +#if wxUSE_STREAMS + +#include "wx/stream.h" + #ifndef WX_PRECOMP - #include "wx/defs.h" + #include "wx/log.h" #endif -#if wxUSE_STREAMS - #include -#include "wx/stream.h" #include "wx/datstrm.h" #include "wx/textfile.h" -#include "wx/log.h" // ---------------------------------------------------------------------------- // constants @@ -117,7 +117,10 @@ wxStreamBuffer::wxStreamBuffer(const wxStreamBuffer& buffer) void wxStreamBuffer::FreeBuffer() { if ( m_destroybuf ) + { free(m_buffer_start); + m_buffer_start = NULL; + } } wxStreamBuffer::~wxStreamBuffer() @@ -163,15 +166,15 @@ void wxStreamBuffer::SetBufferIO(void *start, void wxStreamBuffer::SetBufferIO(size_t bufsize) { - // start by freeing the old buffer - FreeBuffer(); - if ( bufsize ) { + // this will free the old buffer and allocate the new one SetBufferIO(malloc(bufsize), bufsize, true /* take ownership */); } else // no buffer size => no buffer { + // still free the old one + FreeBuffer(); InitBuffer(); } }