- don't delete the null logger.
- don't leak LogStreamInfo when detaching streams from DefaultLogger. - detach the stream before deleting it in aiDetachAllLogStreams. Thanks to Bart Botta for the patch. - DefaultLogger does not properly delete log streams if they're still attached to it when the logger is destroyed. This is the behaviour specified in the documentation. - Adapt AssimpView's logger usage, which didn't follow the spec as well. git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@659 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
This commit is contained in:
@@ -82,7 +82,7 @@ struct LogStreamInfo
|
||||
// Destructor
|
||||
~LogStreamInfo()
|
||||
{
|
||||
// empty
|
||||
delete m_pStream;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -237,7 +237,7 @@ void DefaultLogger::kill()
|
||||
boost::mutex::scoped_lock lock(loggerMutex);
|
||||
#endif
|
||||
|
||||
if (m_pLogger != &s_pNullLogger)return;
|
||||
if (m_pLogger == &s_pNullLogger)return;
|
||||
delete m_pLogger;
|
||||
m_pLogger = &s_pNullLogger;
|
||||
}
|
||||
@@ -332,6 +332,9 @@ bool DefaultLogger::detatchStream( LogStream *pStream, unsigned int severity )
|
||||
(*it)->m_uiErrorSeverity &= ~severity;
|
||||
if ( (*it)->m_uiErrorSeverity == 0 )
|
||||
{
|
||||
// don't delete the underlying stream 'cause the caller gains ownership again
|
||||
(**it).m_pStream = NULL;
|
||||
delete *it;
|
||||
m_StreamArray.erase( it );
|
||||
break;
|
||||
}
|
||||
@@ -356,8 +359,10 @@ DefaultLogger::DefaultLogger(LogSeverity severity)
|
||||
// Destructor
|
||||
DefaultLogger::~DefaultLogger()
|
||||
{
|
||||
for ( StreamIt it = m_StreamArray.begin(); it != m_StreamArray.end(); ++it )
|
||||
for ( StreamIt it = m_StreamArray.begin(); it != m_StreamArray.end(); ++it ) {
|
||||
// also frees the underlying stream, we are its owner.
|
||||
delete *it;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user