Changeset 281011 in webkit
- Timestamp:
- Aug 13, 2021, 2:38:55 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
platform/mock/mediasource/MockMediaPlayerMediaSource.cpp (modified) (3 diffs)
-
platform/mock/mediasource/MockMediaPlayerMediaSource.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r281009 r281011 1 2021-08-13 Sergio Villar Senin <svillar@igalia.com> 2 3 Crash in MockMediaSourcePrivate 4 https://bugs.webkit.org/show_bug.cgi?id=226795 5 6 Reviewed by Darin Adler. 7 8 The MockMediaPlayerMediaSource uses callOnMainThread() to execute advanceCurrentTime(). It might 9 happen that the object is destructed before the callback is executed as it isn't a ref counted 10 object. That leads to a crash on ASAN builds. 11 12 Made the object capable of creating weak ptrs so that we could check whether the _this_ object 13 has been freed in the meantime or not. For the former case we just bail out. 14 15 * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp: 16 (WebCore::MockMediaPlayerMediaSource::play): Create a WeakPtr. 17 (WebCore::MockMediaPlayerMediaSource::seekWithTolerance): Ditto. 18 (WebCore::MockMediaPlayerMediaSource::seekCompleted): Ditto. 19 * platform/mock/mediasource/MockMediaPlayerMediaSource.h: inherit from CanMakeWeakPtr. 20 1 21 2021-08-12 Alex Christensen <achristensen@webkit.org> 2 22 -
trunk/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp
r278253 r281011 124 124 { 125 125 m_playing = 1; 126 callOnMainThread([this] { 126 callOnMainThread([this, weakThis = makeWeakPtr(this)] { 127 if (!weakThis) 128 return; 127 129 advanceCurrentTime(); 128 130 }); … … 221 223 222 224 if (m_playing) 223 callOnMainThread([this] { 225 callOnMainThread([this, weakThis = makeWeakPtr(this)] { 226 if (!weakThis) 227 return; 224 228 advanceCurrentTime(); 225 229 }); … … 283 287 284 288 if (m_playing) 285 callOnMainThread([this] { 289 callOnMainThread([this, weakThis = makeWeakPtr(this)] { 290 if (!weakThis) 291 return; 286 292 advanceCurrentTime(); 287 293 }); -
trunk/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h
r278253 r281011 32 32 #include <wtf/Logger.h> 33 33 #include <wtf/MediaTime.h> 34 #include <wtf/WeakPtr.h> 34 35 35 36 namespace WebCore { … … 38 39 class MockMediaSourcePrivate; 39 40 40 class MockMediaPlayerMediaSource : public MediaPlayerPrivateInterface {41 class MockMediaPlayerMediaSource : public MediaPlayerPrivateInterface, public CanMakeWeakPtr<MockMediaPlayerMediaSource> { 41 42 public: 42 43 explicit MockMediaPlayerMediaSource(MediaPlayer*);
Note:
See TracChangeset
for help on using the changeset viewer.