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); ReleaseDecoder(_ptrDecoder);
_ptrDecoder = NULL; _ptrDecoder = NULL;
memset(&_receiveCodec, 0, sizeof(VideoCodec)); 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) if ((*it).second->_settings != NULL)
{ {
delete (*it).second->_settings; delete (*it).second->_settings;
} }
delete (*it).second; delete (*it).second;
_decMap.erase(it); _decMap.erase(it);
it = _decMap.begin();
} }
for (ExternalDecoderMap::iterator it = _decExternalMap.begin(); ExternalDecoderMap::iterator exterit = _decExternalMap.begin();
it != _decExternalMap.end(); ++it) { while (exterit != _decExternalMap.begin()) {
delete (*it).second; delete (*exterit).second;
_decExternalMap.erase(it); _decExternalMap.erase(exterit);
exterit = _decExternalMap.begin();
} }
_currentDecIsExternal = false; _currentDecIsExternal = false;
return VCM_OK; return VCM_OK;
} }