| Index: runtime/bin/process_linux.cc
|
| diff --git a/runtime/bin/process_linux.cc b/runtime/bin/process_linux.cc
|
| index 4e1ae8c73d749e5fdaff01fe7e2c35ce36dd7b6b..342d600e498a3ccebe6b8f3f21e3ead4e3c15527 100644
|
| --- a/runtime/bin/process_linux.cc
|
| +++ b/runtime/bin/process_linux.cc
|
| @@ -999,7 +999,10 @@ intptr_t Process::SetSignalHandler(intptr_t signal) {
|
| }
|
|
|
|
|
| -void Process::ClearSignalHandler(intptr_t signal) {
|
| +void Process::ClearSignalHandler(intptr_t signal, Dart_Port port) {
|
| + // Either the port is illegal or there is no current isolate, but not both.
|
| + ASSERT((port != ILLEGAL_PORT) || (Dart_CurrentIsolate() == NULL));
|
| + ASSERT((port == ILLEGAL_PORT) || (Dart_CurrentIsolate() != NULL));
|
| ThreadSignalBlocker blocker(kSignalsCount, kSignals);
|
| MutexLocker lock(signal_mutex);
|
| SignalInfo* handler = signal_handlers;
|
| @@ -1007,7 +1010,7 @@ void Process::ClearSignalHandler(intptr_t signal) {
|
| while (handler != NULL) {
|
| bool remove = false;
|
| if (handler->signal() == signal) {
|
| - if (handler->port() == Dart_GetMainPortId()) {
|
| + if ((port == ILLEGAL_PORT) || (handler->port() == port)) {
|
| if (signal_handlers == handler) {
|
| signal_handlers = handler->next();
|
| }
|
|
|