From f89be8d79f4fe02be688b3cb3d1cc4e8c1aad26a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 2 Jun 2015 15:22:24 +0100 Subject: Fix unsafe unlocked leak of reference. --- src/lib/audio_stream.h | 7 +------ src/lib/ffmpeg_content.cc | 4 +++- src/lib/single_stream_audio_content.cc | 4 +++- 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'src/lib') 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) _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 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); -- cgit v1.2.3