Title: [125319] trunk/Source/WebKit2
Revision
125319
Author
[email protected]
Date
2012-08-10 13:16:45 -0700 (Fri, 10 Aug 2012)

Log Message

Crash exiting from HTML5 FS mode to normal mode via ESC key
https://bugs.webkit.org/show_bug.cgi?id=93663

Reviewed by Eric Carlson.

Crash is due to a refcount underrun with _watchdogTimer due to adopting an autoreleased NSTimer.
Use the non-autoreleased NSTimer creation method and manually add to the main NSRunLoop.

* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController cancelOperation:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (125318 => 125319)


--- trunk/Source/WebKit2/ChangeLog	2012-08-10 20:13:02 UTC (rev 125318)
+++ trunk/Source/WebKit2/ChangeLog	2012-08-10 20:16:45 UTC (rev 125319)
@@ -1,3 +1,16 @@
+2012-08-09  Jer Noble  <[email protected]>
+
+        Crash exiting from HTML5 FS mode to normal mode via ESC key
+        https://bugs.webkit.org/show_bug.cgi?id=93663
+
+        Reviewed by Eric Carlson.
+
+        Crash is due to a refcount underrun with _watchdogTimer due to adopting an autoreleased NSTimer.
+        Use the non-autoreleased NSTimer creation method and manually add to the main NSRunLoop.
+
+        * UIProcess/mac/WKFullScreenWindowController.mm:
+        (-[WKFullScreenWindowController cancelOperation:]):
+
 2012-08-10  Rafael Brandao  <[email protected]>
 
         [Qt] WebViewLoadFavIcon::test_favIconLoad() fails

Modified: trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm (125318 => 125319)


--- trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm	2012-08-10 20:13:02 UTC (rev 125318)
+++ trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm	2012-08-10 20:16:45 UTC (rev 125319)
@@ -144,8 +144,10 @@
 
     // If the page doesn't respond in DefaultWatchdogTimerInterval seconds, it could be because
     // the WebProcess has hung, so exit anyway.
-    if (!_watchdogTimer)
-        _watchdogTimer = adoptNS([NSTimer scheduledTimerWithTimeInterval:DefaultWatchdogTimerInterval target:self selector:@selector(exitFullScreen) userInfo:nil repeats:NO]);
+    if (!_watchdogTimer) {
+        _watchdogTimer = adoptNS([[NSTimer alloc] initWithFireDate:nil interval:DefaultWatchdogTimerInterval target:self selector:@selector(exitFullScreen) userInfo:nil repeats:NO]);
+        [[NSRunLoop mainRunLoop] addTimer:_watchdogTimer.get() forMode:NSDefaultRunLoopMode];
+    }
 }
 
 #pragma mark -
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to