Title: [158951] tags/Safari-538.5/Source/WebCore

Diff

Modified: tags/Safari-538.5/Source/WebCore/ChangeLog (158950 => 158951)


--- tags/Safari-538.5/Source/WebCore/ChangeLog	2013-11-08 21:42:02 UTC (rev 158950)
+++ tags/Safari-538.5/Source/WebCore/ChangeLog	2013-11-08 21:50:43 UTC (rev 158951)
@@ -1,3 +1,29 @@
+2013-11-07  Matt Hanson  <[email protected]>
+
+        Merge r158923.
+
+    2013-11-07  Jer Noble  <[email protected]>
+
+            [Mac] Crash at com.apple.WebCore: WebCore::MediaPlayerPrivateAVFoundationObjC::tracksDidChange + 26
+            https://bugs.webkit.org/show_bug.cgi?id=124031
+
+            Reviewed by Eric Carlson.
+
+            WTF::bind() causes errors when given a bare id pointer as a parameter,
+            when that parameter is casted to a specific NS type pointer (in this
+            case, a NSArray*) in order to pass it as a parameter to the bound
+            function.
+
+            Instead of passing around bare id pointers, wrap them in RetainPtr<>
+            objects before passing them to WTF::bind().
+
+            * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+            * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+            (WebCore::MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesDidChange):
+            (WebCore::MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange):
+            (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksDidChange):
+            (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
+
 2013-11-07  Lucas Forschler  <[email protected]>
 
         Merge r158869

Modified: tags/Safari-538.5/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (158950 => 158951)


--- tags/Safari-538.5/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h	2013-11-08 21:42:02 UTC (rev 158950)
+++ tags/Safari-538.5/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h	2013-11-08 21:50:43 UTC (rev 158951)
@@ -98,9 +98,9 @@
     void playbackBufferEmptyDidChange(bool);
     void playbackBufferFullWillChange();
     void playbackBufferFullDidChange(bool);
-    void loadedTimeRangesDidChange(NSArray*);
-    void seekableTimeRangesDidChange(NSArray*);
-    void tracksDidChange(NSArray*);
+    void loadedTimeRangesDidChange(RetainPtr<NSArray>);
+    void seekableTimeRangesDidChange(RetainPtr<NSArray>);
+    void tracksDidChange(RetainPtr<NSArray>);
     void hasEnabledAudioDidChange(bool);
     void presentationSizeDidChange(FloatSize);
     void durationDidChange(double);

Modified: tags/Safari-538.5/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (158950 => 158951)


--- tags/Safari-538.5/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm	2013-11-08 21:42:02 UTC (rev 158950)
+++ tags/Safari-538.5/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm	2013-11-08 21:50:43 UTC (rev 158951)
@@ -1699,7 +1699,7 @@
         updateStates();
 }
 
-void MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesDidChange(NSArray* seekableRanges)
+void MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesDidChange(RetainPtr<NSArray> seekableRanges)
 {
     m_cachedSeekableRanges = seekableRanges;
 
@@ -1707,7 +1707,7 @@
     updateStates();
 }
 
-void MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange(NSArray* loadedRanges)
+void MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange(RetainPtr<NSArray> loadedRanges)
 {
     m_cachedLoadedRanges = loadedRanges;
 
@@ -1715,7 +1715,7 @@
     updateStates();
 }
 
-void MediaPlayerPrivateAVFoundationObjC::tracksDidChange(NSArray* tracks)
+void MediaPlayerPrivateAVFoundationObjC::tracksDidChange(RetainPtr<NSArray> tracks)
 {
     m_cachedTracks = tracks;
 
@@ -1876,13 +1876,13 @@
         else if ([keyPath isEqualToString:@"playbackBufferFull"])
             function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::playbackBufferFullDidChange, m_callback, [newValue boolValue]);
         else if ([keyPath isEqualToString:@"asset"])
-            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::setAsset, m_callback, newValue);
+            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::setAsset, m_callback, RetainPtr<NSArray>(newValue));
         else if ([keyPath isEqualToString:@"loadedTimeRanges"])
-            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange, m_callback, newValue);
+            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange, m_callback, RetainPtr<NSArray>(newValue));
         else if ([keyPath isEqualToString:@"seekableTimeRanges"])
-            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesDidChange, m_callback, newValue);
+            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::seekableTimeRangesDidChange, m_callback, RetainPtr<NSArray>(newValue));
         else if ([keyPath isEqualToString:@"tracks"])
-            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::tracksDidChange, m_callback, newValue);
+            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::tracksDidChange, m_callback, RetainPtr<NSArray>(newValue));
         else if ([keyPath isEqualToString:@"hasEnabledAudio"])
             function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::hasEnabledAudioDidChange, m_callback, [newValue boolValue]);
         else if ([keyPath isEqualToString:@"presentationSize"])
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to