Index: runtime/bin/dbg_message.cc |
diff --git a/runtime/bin/dbg_message.cc b/runtime/bin/dbg_message.cc |
index a6358806daca30d265fda87d03c6b66a7fc05656..0a3038a619d198038fcac8f9d59b14910c383997 100644 |
--- a/runtime/bin/dbg_message.cc |
+++ b/runtime/bin/dbg_message.cc |
@@ -1402,14 +1402,17 @@ void DbgMsgQueueList::ExceptionThrownHandler(Dart_IsolateId isolate_id, |
void DbgMsgQueueList::IsolateEventHandler(Dart_IsolateId isolate_id, |
Dart_IsolateEvent kind) { |
- DebuggerConnectionHandler::WaitForConnection(); |
- Dart_EnterScope(); |
if (kind == kCreated) { |
+ DebuggerConnectionHandler::WaitForConnection(); |
+ Dart_EnterScope(); |
DbgMsgQueue* msg_queue = AddIsolateMsgQueue(isolate_id); |
msg_queue->SendIsolateEvent(isolate_id, kind); |
+ Dart_ExitScope(); |
} else { |
DbgMsgQueue* msg_queue = GetIsolateMsgQueue(isolate_id); |
if (msg_queue != NULL) { |
+ DebuggerConnectionHandler::WaitForConnection(); |
+ Dart_EnterScope(); |
msg_queue->SendQueuedMsgs(); |
msg_queue->SendIsolateEvent(isolate_id, kind); |
if (kind == kInterrupted) { |
@@ -1418,9 +1421,11 @@ void DbgMsgQueueList::IsolateEventHandler(Dart_IsolateId isolate_id, |
ASSERT(kind == kShutdown); |
RemoveIsolateMsgQueue(isolate_id); |
} |
+ Dart_ExitScope(); |
} |
+ // If there is no receive message queue, do not wait for a connection, and |
+ // ignore the message. |
} |
- Dart_ExitScope(); |
} |
} // namespace bin |