RenderThemeCocoa::mediaControlsFormattedStringForDuration may cause a crash due to...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Oct 2017 17:32:11 +0000 (17:32 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Oct 2017 17:32:11 +0000 (17:32 +0000)
https://bugs.webkit.org/show_bug.cgi?id=178716
<rdar://problem/35112900>

Patch by Antoine Quint <graouts@apple.com> on 2017-10-24
Reviewed by Dean Jackson.

* rendering/RenderThemeCocoa.mm:
(WebCore::RenderThemeCocoa::mediaControlsFormattedStringForDuration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@223896 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderThemeCocoa.mm

index 6de3b46..fb95557 100644 (file)
@@ -1,3 +1,14 @@
+2017-10-24  Antoine Quint  <graouts@apple.com>
+
+        RenderThemeCocoa::mediaControlsFormattedStringForDuration may cause a crash due to unhandled Obj-C exception
+        https://bugs.webkit.org/show_bug.cgi?id=178716
+        <rdar://problem/35112900>
+
+        Reviewed by Dean Jackson.
+
+        * rendering/RenderThemeCocoa.mm:
+        (WebCore::RenderThemeCocoa::mediaControlsFormattedStringForDuration):
+
 2017-10-24  Ryosuke Niwa  <rniwa@webkit.org>
 
         SizesAttributeParser::SizesAttributeParser triggers layout
index e3d7294..df2c731 100644 (file)
@@ -46,6 +46,7 @@ SOFT_LINK_MAY_FAIL(PassKit, PKDrawApplePayButton, void, (CGContextRef context, C
 
 #if ENABLE(VIDEO)
 #include "LocalizedStrings.h"
+#include <wtf/BlockObjCExceptions.h>
 #endif
 
 namespace WebCore {
@@ -117,6 +118,7 @@ String RenderThemeCocoa::mediaControlsFormattedStringForDuration(const double du
     if (!std::isfinite(durationInSeconds))
         return WEB_UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
 
+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
     if (!m_durationFormatter) {
         m_durationFormatter = adoptNS([NSDateComponentsFormatter new]);
         m_durationFormatter.get().unitsStyle = NSDateComponentsFormatterUnitsStyleFull;
@@ -125,6 +127,7 @@ String RenderThemeCocoa::mediaControlsFormattedStringForDuration(const double du
         m_durationFormatter.get().maximumUnitCount = 2;
     }
     return [m_durationFormatter.get() stringFromTimeInterval:durationInSeconds];
+    END_BLOCK_OBJC_EXCEPTIONS;
 #else
     return emptyString();
 #endif