Chromium Code Reviews| Index: runtime/vm/message_handler.cc |
| diff --git a/runtime/vm/message_handler.cc b/runtime/vm/message_handler.cc |
| index adfda8e2fd6c95786c7787fa6c0f5dab389c31f6..936e711684f145dbea421ca7b2e4397934458d69 100644 |
| --- a/runtime/vm/message_handler.cc |
| +++ b/runtime/vm/message_handler.cc |
| @@ -332,6 +332,8 @@ void MessageHandler::TaskCallback() { |
| MessageStatus status = kOK; |
| bool run_end_callback = false; |
| bool delete_me = false; |
| + EndCallback end_callback = NULL; |
| + CallbackData callback_data = NULL; |
| { |
| // We will occasionally release and reacquire this monitor in this |
| // function. Whenever we reacquire the monitor we *must* process |
| @@ -415,6 +417,8 @@ void MessageHandler::TaskCallback() { |
| } |
| pool_ = NULL; |
| // Decide if we have a callback before releasing the monitor. |
| + end_callback = end_callback_; |
| + callback_data = callback_data_; |
| run_end_callback = end_callback_ != NULL; |
| delete_me = delete_me_; |
| } |
| @@ -432,7 +436,8 @@ void MessageHandler::TaskCallback() { |
| ASSERT(!delete_me || !run_end_callback); |
| if (run_end_callback) { |
|
siva
2017/01/24 19:24:25
is run_end_callback still needed, it could just be
|
| - end_callback_(callback_data_); |
| + ASSERT(end_callback != NULL); |
| + end_callback(callback_data); |
| // The handler may have been deleted after this point. |
| } |
| if (delete_me) { |