diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-06-02 15:22:24 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-06-02 15:22:24 +0100 |
| commit | f89be8d79f4fe02be688b3cb3d1cc4e8c1aad26a (patch) | |
| tree | 0f764072ebfcb5a4e015d23dcd2b0595891300a6 | |
| parent | c157cd97740a2ba55d3e87bd9844429cc7d49ce7 (diff) | |
Fix unsafe unlocked leak of reference.
| -rw-r--r-- | src/lib/audio_stream.h | 7 | ||||
| -rw-r--r-- | src/lib/ffmpeg_content.cc | 4 | ||||
| -rw-r--r-- | src/lib/single_stream_audio_content.cc | 4 |
3 files changed, 7 insertions, 8 deletions
diff --git a/src/lib/audio_stream.h b/src/lib/audio_stream.h index b3b203b39..ea6c54ead 100644 --- a/src/lib/audio_stream.h +++ b/src/lib/audio_stream.h @@ -34,16 +34,11 @@ public: void set_mapping (AudioMapping mapping); void set_frame_rate (int frame_rate); - AudioMapping const & mapping () const { + AudioMapping mapping () const { boost::mutex::scoped_lock lm (_mutex); return _mapping; } - AudioMapping & mapping () { - boost::mutex::scoped_lock lm (_mutex); - return _mapping; - } - int frame_rate () const { boost::mutex::scoped_lock lm (_mutex); return _frame_rate; diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index fa2671b36..eab110236 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -173,7 +173,9 @@ FFmpegContent::examine (shared_ptr<Job> job) _audio_streams = examiner->audio_streams (); if (!_audio_streams.empty ()) { - _audio_streams.front()->mapping().make_default (); + AudioMapping m = _audio_streams.front()->mapping (); + m.make_default (); + _audio_streams.front()->set_mapping (m); } _first_video = examiner->first_video (); diff --git a/src/lib/single_stream_audio_content.cc b/src/lib/single_stream_audio_content.cc index 3389c0557..a38ef0e1e 100644 --- a/src/lib/single_stream_audio_content.cc +++ b/src/lib/single_stream_audio_content.cc @@ -63,7 +63,9 @@ SingleStreamAudioContent::take_from_audio_examiner (shared_ptr<AudioExaminer> ex { boost::mutex::scoped_lock lm (_mutex); _audio_stream.reset (new AudioStream (examiner->audio_frame_rate(), examiner->audio_channels ())); - _audio_stream->mapping().make_default (); + AudioMapping m = _audio_stream->mapping (); + m.make_default (); + _audio_stream->set_mapping (m); } signal_changed (AudioContentProperty::AUDIO_STREAMS); |
