Chromium Code Reviews| Index: content/renderer/media/media_stream_dispatcher.cc |
| diff --git a/content/renderer/media/media_stream_dispatcher.cc b/content/renderer/media/media_stream_dispatcher.cc |
| index e19b1e03b8021219aeb2ebfe230f78046813ad1d..dc981ca563d4fbb3ec8efe749d3268f8b8238149 100644 |
| --- a/content/renderer/media/media_stream_dispatcher.cc |
| +++ b/content/renderer/media/media_stream_dispatcher.cc |
| @@ -352,6 +352,15 @@ void MediaStreamDispatcher::OnDeviceStopped( |
| if (stream->handler.get()) |
| stream->handler->OnDeviceStopped(label, device_info); |
| + // |it| could have already been invalidated in the function call above. So we |
| + // need to check if |label| is still in |label_stream_map_| again. |
| + // Note: this is a quick fix to the crash caused by erasing the invalidated |
| + // iterator from |label_stream_map_| (crbug.com/616884). Future work needs to |
| + // be done to resolve this re-entering issue. |
|
miu
2016/06/04 04:30:01
s/re-entering/re-entrancy/
xjz
2016/06/06 17:09:53
Done.
|
| + it = label_stream_map_.find(label); |
| + if (it == label_stream_map_.end()) |
| + return; |
| + stream = &it->second; |
| if (stream->audio_array.empty() && stream->video_array.empty()) |
| label_stream_map_.erase(it); |
| } |