Index: runtime/bin/io_service.cc |
diff --git a/runtime/bin/io_service.cc b/runtime/bin/io_service.cc |
index 922b98c14192a53e4e5ff4daa8a866294b8aadfd..383b79f69e1ebf910d6bccbbbadca732a90613c1 100644 |
--- a/runtime/bin/io_service.cc |
+++ b/runtime/bin/io_service.cc |
@@ -28,18 +28,21 @@ namespace bin { |
break; |
void IOServiceCallback(Dart_Port dest_port_id, |
- Dart_Port reply_port_id, |
Dart_CObject* message) { |
+ Dart_Port reply_port_id; |
CObject* response = CObject::IllegalArgumentError(); |
CObjectArray request(message); |
if (message->type == Dart_CObject_kArray && |
- request.Length() == 3 && |
+ request.Length() == 4 && |
request[0]->IsInt32() && |
- request[1]->IsInt32() && |
- request[2]->IsArray()) { |
+ request[1]->IsSendPort() && |
+ request[2]->IsInt32() && |
+ request[3]->IsArray()) { |
CObjectInt32 message_id(request[0]); |
- CObjectInt32 request_id(request[1]); |
- CObjectArray data(request[2]); |
+ CObjectSendPort reply_port(request[1]); |
+ CObjectInt32 request_id(request[2]); |
+ CObjectArray data(request[3]); |
+ reply_port_id = reply_port.Value(); |
switch (request_id.Value()) { |
IO_SERVICE_REQUEST_LIST(CASE_REQUEST); |
default: |
@@ -75,4 +78,3 @@ void FUNCTION_NAME(IOService_NewServicePort)(Dart_NativeArguments args) { |
} // namespace bin |
} // namespace dart |
- |