Bug 156648

Summary: REGRESSION( r199603): Pandora crashes WebKit in WebPlaybackSessionManager::removeClientForContext
Product: WebKit Reporter: Jer Noble <jer.noble>
Component: New BugsAssignee: Jer Noble <jer.noble>
Status: RESOLVED FIXED    
Severity: Normal CC: bdakin, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
bdakin: review+
Follow up patch darin: review+

Jer Noble
Reported 2016-04-15 16:57:41 PDT
REGRESSION( r199603): Pandora crashes WebKit in WebPlaybackSessionManager::removeClientForContext
Attachments
Patch (1.62 KB, patch)
2016-04-15 16:59 PDT, Jer Noble
bdakin: review+
Follow up patch (2.54 KB, patch)
2016-04-18 08:33 PDT, Jer Noble
darin: review+
Jer Noble
Comment 1 2016-04-15 16:58:14 PDT
Jer Noble
Comment 2 2016-04-15 16:59:30 PDT
Jer Noble
Comment 3 2016-04-15 17:01:52 PDT
Darin Adler
Comment 4 2016-04-15 22:41:14 PDT
Comment on attachment 276526 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=276526&action=review > Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:262 > + if (!m_mediaElements.contains(&mediaElement)) > return; > > uint64_t contextId = m_mediaElements.get(&mediaElement); This is an inefficient coding pattern. It’s a double hash table lookup. Preferred style is to take advantage of the empty value, and so know that a contextId of 0 means that mediaElement is not in m_mediaElement, or to use find and thus be able to do both the contains (iterator != m_mediaElement.end()) and get (iterator->value) operations and share that single hash table lookup.
Jer Noble
Comment 5 2016-04-18 08:33:06 PDT
Reopening to attach new patch.
Jer Noble
Comment 6 2016-04-18 08:33:14 PDT
Created attachment 276641 [details] Follow up patch
Darin Adler
Comment 7 2016-04-18 08:52:40 PDT
Comment on attachment 276641 [details] Follow up patch View in context: https://bugs.webkit.org/attachment.cgi?id=276641&action=review > Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:236 > + auto foundIter = m_mediaElements.find(&mediaElement); Normally best not to abbreviate "iterator" as "iter". I would probably have named this just "iterator", but "foundIterator" is OK.
Jer Noble
Comment 8 2016-04-18 09:04:02 PDT
Note You need to log in before you can comment on or make changes to this bug.