Bug 1335390 - prevent nul pointer dereference in parameter initialisation. r?baku
MozReview-Commit-ID: H2RrwojBug
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -786,33 +786,38 @@ TrackTypeToStr(TrackInfo::TrackType aTra
MediaFormatReader::MediaFormatReader(AbstractMediaDecoder* aDecoder,
MediaDataDemuxer* aDemuxer,
VideoFrameContainer* aVideoFrameContainer)
: MediaDecoderReader(aDecoder)
, mAudio(this, MediaData::AUDIO_DATA,
Preferences::GetUint("media.audio-max-decode-error", 3))
, mVideo(this, MediaData::VIDEO_DATA,
Preferences::GetUint("media.video-max-decode-error", 2))
- , mDemuxer(new DemuxerProxy(aDemuxer, aDecoder->AbstractMainThread()))
+ , mDemuxer(nullptr)
, mDemuxerInitDone(false)
, mLastReportedNumDecodedFrames(0)
, mPreviousDecodedKeyframeTime_us(sNoPreviousDecodedKeyframe)
, mInitDone(false)
, mTrackDemuxersMayBlock(false)
, mSeekScheduled(false)
, mVideoFrameContainer(aVideoFrameContainer)
, mDecoderFactory(new DecoderFactory(this))
{
MOZ_ASSERT(aDemuxer);
MOZ_COUNT_CTOR(MediaFormatReader);
- if (aDecoder && aDecoder->CompositorUpdatedEvent()) {
- mCompositorUpdatedListener =
- aDecoder->CompositorUpdatedEvent()->Connect(
- mTaskQueue, this, &MediaFormatReader::NotifyCompositorUpdated);
+ if (aDecoder) {
+ mDemuxer = MakeUnique<DemuxerProxy>(aDemuxer,
+ aDecoder->AbstractMainThread());
+
+ if (aDecoder->CompositorUpdatedEvent()) {
+ mCompositorUpdatedListener =
+ aDecoder->CompositorUpdatedEvent()->Connect(
+ mTaskQueue, this, &MediaFormatReader::NotifyCompositorUpdated);
+ }
}
}
MediaFormatReader::~MediaFormatReader()
{
MOZ_COUNT_DTOR(MediaFormatReader);
}