Don't access a message after it has been enqueued. It may be deleted

at that point.
Review URL: https://chromiumcodereview.appspot.com//9288001

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@3576 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
turnidge@google.com 2012-01-24 22:02:53 +00:00
parent 0071e91d16
commit 0c9f177bf0

View file

@ -100,9 +100,13 @@ void Isolate::PostMessage(Message* message) {
"\tdest_port: %lld\n",
source_name, message->reply_port(), name(), message->dest_port());
}
Message::Priority priority = message->priority();
message_queue()->Enqueue(message);
ASSERT(message->priority() < Message::kOOBPriority);
if (message->priority() >= Message::kOOBPriority) {
message = NULL; // Do not access message. May have been deleted.
ASSERT(priority < Message::kOOBPriority);
if (priority >= Message::kOOBPriority) {
// Handle out of band messages even if the isolate is busy.
ScheduleInterrupts(Isolate::kMessageInterrupt);
}