Chromium Code Reviews| Index: runtime/vm/isolate.cc |
| diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
| index e6e15646830edf2c38fb814aa40f7f46ed92aac1..3c6c88b8049299086efe71ec19e2c6e858493fbd 100644 |
| --- a/runtime/vm/isolate.cc |
| +++ b/runtime/vm/isolate.cc |
| @@ -2192,12 +2192,10 @@ RawObject* Isolate::InvokePendingServiceExtensionCalls() { |
| "[+%" Pd64 "ms] Isolate %s : _runExtension complete for %s\n", |
| Dart::timestamp(), name(), method_name.ToCString()); |
| } |
| + // Propagate the error. |
| if (result.IsError()) { |
| - if (result.IsUnwindError()) { |
| - // Propagate the unwind error. Remaining service extension calls |
| - // are dropped. |
| - return result.raw(); |
| - } else { |
| + // Remaining service extension calls are dropped. |
| + if (!result.IsUnwindError()) { |
| // Send error back over the protocol. |
| Service::PostError(method_name, |
| parameter_keys, |
| @@ -2206,9 +2204,13 @@ RawObject* Isolate::InvokePendingServiceExtensionCalls() { |
| id, |
| Error::Cast(result)); |
| } |
| + return result.raw(); |
| } |
| + // Drain the microtask queue. |
| result = DartLibraryCalls::DrainMicrotaskQueue(); |
| + // Propagate the error. |
| if (result.IsError()) { |
| + // Remaining service extension calls are dropped. |
|
siva
2016/08/24 17:53:24
Should this error also be posted back over the pro
Cutch
2016/08/24 18:30:49
The code Service::PostError is actually responding
|
| return result.raw(); |
| } |
| } |