Iterator was invalid while removing entries from codec db maps.

Review URL: http://webrtc-codereview.appspot.com/373003

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1534 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
mallinath@webrtc.org 2012-01-24 17:11:44 +00:00
parent 9e332ab95b
commit 218db3de20

View File

@ -484,19 +484,23 @@ VCMCodecDataBase::ResetReceiver()
ReleaseDecoder(_ptrDecoder);
_ptrDecoder = NULL;
memset(&_receiveCodec, 0, sizeof(VideoCodec));
for (DecoderMap::iterator it = _decMap.begin(); it != _decMap.end(); ++it) {
DecoderMap::iterator it = _decMap.begin();
while (it != _decMap.end()) {
if ((*it).second->_settings != NULL)
{
delete (*it).second->_settings;
}
delete (*it).second;
_decMap.erase(it);
it = _decMap.begin();
}
for (ExternalDecoderMap::iterator it = _decExternalMap.begin();
it != _decExternalMap.end(); ++it) {
delete (*it).second;
_decExternalMap.erase(it);
ExternalDecoderMap::iterator exterit = _decExternalMap.begin();
while (exterit != _decExternalMap.begin()) {
delete (*exterit).second;
_decExternalMap.erase(exterit);
exterit = _decExternalMap.begin();
}
_currentDecIsExternal = false;
return VCM_OK;
}