Changeset 202922 in webkit
- Timestamp:
- Jul 7, 2016, 11:47:51 AM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
Platform/IPC/MessageReceiverMap.cpp (modified) (1 diff)
-
Platform/IPC/MessageReceiverMap.h (modified) (1 diff)
-
Shared/ChildProcess.cpp (modified) (1 diff)
-
Shared/ChildProcess.h (modified) (1 diff)
-
WebProcess/ApplePay/WebPaymentCoordinator.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r202898 r202922 1 2016-07-07 Anders Carlsson <andersca@apple.com> 2 3 Memory corruption destroying PaymentCoordinator 4 https://bugs.webkit.org/show_bug.cgi?id=159516 5 rdar://problem/27222857 6 7 Reviewed by Tim Horton. 8 9 Introduce a new MessageReceiverMap::removeMessageReceiver that takes a MessageReceiver 10 and removes all traces of it in the message receiver map. Use it in the WebPaymentCoordinator destructor. 11 12 * Platform/IPC/MessageReceiverMap.cpp: 13 (IPC::MessageReceiverMap::removeMessageReceiver): 14 * Platform/IPC/MessageReceiverMap.h: 15 * Shared/ChildProcess.cpp: 16 (WebKit::ChildProcess::removeMessageReceiver): 17 * Shared/ChildProcess.h: 18 * WebProcess/ApplePay/WebPaymentCoordinator.cpp: 19 (WebKit::WebPaymentCoordinator::~WebPaymentCoordinator): 20 1 21 2016-07-07 Csaba Osztrogonác <ossy@webkit.org> 2 22 -
trunk/Source/WebKit2/Platform/IPC/MessageReceiverMap.cpp
r186464 r202922 78 78 } 79 79 80 void MessageReceiverMap::removeMessageReceiver(MessageReceiver& messageReceiver) 81 { 82 Vector<StringReference> globalReceiversToRemove; 83 for (auto& nameAndReceiver : m_globalMessageReceivers) { 84 if (nameAndReceiver.value == &messageReceiver) 85 globalReceiversToRemove.append(nameAndReceiver.key); 86 } 87 88 for (auto& globalReceiverToRemove : globalReceiversToRemove) 89 removeMessageReceiver(globalReceiverToRemove); 90 91 Vector<std::pair<StringReference, uint64_t>> receiversToRemove; 92 for (auto& nameAndIdAndReceiver : m_messageReceivers) { 93 if (nameAndIdAndReceiver.value == &messageReceiver) 94 receiversToRemove.append(std::make_pair(nameAndIdAndReceiver.key.first, nameAndIdAndReceiver.key.second)); 95 } 96 97 for (auto& receiverToRemove : receiversToRemove) 98 removeMessageReceiver(receiverToRemove.first, receiverToRemove.second); 99 } 100 80 101 void MessageReceiverMap::invalidate() 81 102 { -
trunk/Source/WebKit2/Platform/IPC/MessageReceiverMap.h
r177917 r202922 48 48 void removeMessageReceiver(StringReference messageReceiverName); 49 49 void removeMessageReceiver(StringReference messageReceiverName, uint64_t destinationID); 50 void removeMessageReceiver(MessageReceiver&); 50 51 51 52 void invalidate(); -
trunk/Source/WebKit2/Shared/ChildProcess.cpp
r202723 r202922 121 121 } 122 122 123 void ChildProcess::removeMessageReceiver(IPC::MessageReceiver& messageReceiver) 124 { 125 m_messageReceiverMap.removeMessageReceiver(messageReceiver); 126 } 127 123 128 void ChildProcess::disableTermination() 124 129 { -
trunk/Source/WebKit2/Shared/ChildProcess.h
r202723 r202922 66 66 void removeMessageReceiver(IPC::StringReference messageReceiverName, uint64_t destinationID); 67 67 void removeMessageReceiver(IPC::StringReference messageReceiverName); 68 void removeMessageReceiver(IPC::MessageReceiver&); 68 69 69 70 void setProcessSuppressionEnabled(bool); -
trunk/Source/WebKit2/WebProcess/ApplePay/WebPaymentCoordinator.cpp
r202570 r202922 48 48 WebPaymentCoordinator::~WebPaymentCoordinator() 49 49 { 50 WebProcess::singleton().removeMessageReceiver( Messages::WebPaymentCoordinator::messageReceiverName(), m_webPage.pageID());50 WebProcess::singleton().removeMessageReceiver(*this); 51 51 } 52 52
Note:
See TracChangeset
for help on using the changeset viewer.