From: Vadim Zeitlin Date: Tue, 7 Mar 2006 23:04:10 +0000 (+0000) Subject: fixed a double free bug in SetBufferIO(size_t) (coverity checker CID 62) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0d2ef7a802809c59e4fa6be2465c5ac55c9f802d fixed a double free bug in SetBufferIO(size_t) (coverity checker CID 62) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/stream.cpp b/src/common/stream.cpp index 435b60f266..73dde47896 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -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(); } }