|Memory leak in GCWriter::AddEssenceData() (+fix)
|Page 1 of 1|
|Author:||Tjoppen [ Wed Mar 03, 2010 4:05 pm ]|
|Post subject:||Memory leak in GCWriter::AddEssenceData() (+fix)|
I just noticed GCWriter::AddEssenceData() leaks memory if called more than once per stream without a prior call to GCWriter::Flush(). The culprit is the fact that all variants of the function allocate a buffer (UInt8 *Buffer) that isn't freed when/if WriteQueue.insert() fails.
The solution is simple: before allocating Buffer check whether WriteQueue already has an entry for the current stream. If so, bail out:
if(WriteQueue.find(Stream->WriteOrder) != WriteQueue.end())
// Set up a new buffer big enough for the key, a huge BER length and the data
UInt8 *Buffer = new UInt8[(size_t)(16 + 9 + Size)];
Could probably use some kind of error message, but otherwise shuts valgrind up.
|Page 1 of 1||All times are UTC|
|Powered by phpBB® Forum Software © phpBB Group