Changeset 242732 in webkit
- Timestamp:
- Mar 11, 2019, 1:06:55 PM (7 years ago)
- Location:
- trunk/Source/WTF
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
wtf/CrossThreadTask.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r242714 r242732 1 2019-03-11 Sihui Liu <sihui_liu@apple.com> 2 3 Crash under WebCore::IDBDatabase::connectionToServerLost 4 https://bugs.webkit.org/show_bug.cgi?id=195563 5 <rdar://problem/37193655> 6 7 CrossThreadTask should protect callee if it is ThreadSafeRefCounted. 8 9 Reviewed by Geoffrey Garen. 10 11 * wtf/CrossThreadTask.h: 12 (WTF::createCrossThreadTask): 13 1 14 2019-03-11 Ryan Haddad <ryanhaddad@apple.com> 2 15 -
trunk/Source/WTF/wtf/CrossThreadTask.h
r221414 r242732 28 28 #include <wtf/CrossThreadCopier.h> 29 29 #include <wtf/Function.h> 30 #include <wtf/RefPtr.h> 30 31 #include <wtf/StdLibExtras.h> 32 #include <wtf/ThreadSafeRefCounted.h> 31 33 32 34 namespace WTF { … … 83 85 } 84 86 85 template<typename T, typename... Parameters, typename... Arguments> 87 template<typename T, typename std::enable_if<std::is_base_of<ThreadSafeRefCounted<T>, T>::value, int>::type = 0, typename... Parameters, typename... Arguments> 88 CrossThreadTask createCrossThreadTask(T& callee, void (T::*method)(Parameters...), const Arguments&... arguments) 89 { 90 return CrossThreadTask([callee = makeRefPtr(&callee), method, arguments = std::make_tuple(crossThreadCopy<Arguments>(arguments)...)]() mutable { 91 callMemberFunctionForCrossThreadTask(callee.get(), method, WTFMove(arguments)); 92 }); 93 } 94 95 template<typename T, typename std::enable_if<!std::is_base_of<ThreadSafeRefCounted<T>, T>::value, int>::type = 0, typename... Parameters, typename... Arguments> 86 96 CrossThreadTask createCrossThreadTask(T& callee, void (T::*method)(Parameters...), const Arguments&... arguments) 87 97 {
Note:
See TracChangeset
for help on using the changeset viewer.