Index: runtime/bin/socket.cc |
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc |
index f25bd3465d93c832fd7850c05d8b5f95e79e6ff4..fca6c54e253e47e33e465e818c68081f065d4a7e 100644 |
--- a/runtime/bin/socket.cc |
+++ b/runtime/bin/socket.cc |
@@ -99,50 +99,40 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) { |
static bool short_socket_reads = Dart_IsVMFlagSet("short_socket_read"); |
intptr_t socket = |
Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0)); |
- intptr_t available = Socket::Available(socket); |
- if (available > 0) { |
- int64_t length = 0; |
- if (DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 1), &length)) { |
- if (length == -1 || available < length) { |
- length = available; |
- } |
- if (short_socket_reads) { |
- length = (length + 1) / 2; |
- } |
- uint8_t* buffer = NULL; |
- Dart_Handle result = IOBuffer::Allocate(length, &buffer); |
- if (Dart_IsError(result)) Dart_PropagateError(result); |
- ASSERT(buffer != NULL); |
- intptr_t bytes_read = Socket::Read(socket, buffer, length); |
- if (bytes_read == length) { |
- Dart_SetReturnValue(args, result); |
- } else if (bytes_read < length) { |
- // On MacOS when reading from a tty Ctrl-D will result in reading one |
- // less byte then reported as available. |
- if (bytes_read == 0) { |
- Dart_SetReturnValue(args, Dart_Null()); |
- } else { |
- uint8_t* new_buffer = NULL; |
- Dart_Handle new_result = IOBuffer::Allocate(bytes_read, &new_buffer); |
- if (Dart_IsError(new_result)) Dart_PropagateError(new_result); |
- ASSERT(new_buffer != NULL); |
- memmove(new_buffer, buffer, bytes_read); |
- Dart_SetReturnValue(args, new_result); |
- } |
+ int64_t length = 0; |
+ if (DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 1), &length)) { |
+ if (short_socket_reads) { |
+ length = (length + 1) / 2; |
+ } |
+ uint8_t* buffer = NULL; |
+ Dart_Handle result = IOBuffer::Allocate(length, &buffer); |
+ if (Dart_IsError(result)) Dart_PropagateError(result); |
+ ASSERT(buffer != NULL); |
+ intptr_t bytes_read = Socket::Read(socket, buffer, length); |
+ if (bytes_read == length) { |
+ Dart_SetReturnValue(args, result); |
+ } else if (bytes_read < length) { |
+ // On MacOS when reading from a tty Ctrl-D will result in reading one |
+ // less byte then reported as available. |
+ if (bytes_read == 0) { |
+ Dart_SetReturnValue(args, Dart_Null()); |
} else { |
- ASSERT(bytes_read == -1); |
- Dart_SetReturnValue(args, DartUtils::NewDartOSError()); |
+ uint8_t* new_buffer = NULL; |
+ Dart_Handle new_result = IOBuffer::Allocate(bytes_read, &new_buffer); |
+ if (Dart_IsError(new_result)) Dart_PropagateError(new_result); |
+ ASSERT(new_buffer != NULL); |
+ memmove(new_buffer, buffer, bytes_read); |
+ Dart_SetReturnValue(args, new_result); |
} |
} else { |
- OSError os_error(-1, "Invalid argument", OSError::kUnknown); |
- Dart_Handle err = DartUtils::NewDartOSError(&os_error); |
- if (Dart_IsError(err)) Dart_PropagateError(err); |
- Dart_SetReturnValue(args, err); |
+ ASSERT(bytes_read == -1); |
+ Dart_SetReturnValue(args, DartUtils::NewDartOSError()); |
} |
- } else if (available == 0) { |
- Dart_SetReturnValue(args, Dart_Null()); |
} else { |
- Dart_SetReturnValue(args, DartUtils::NewDartOSError()); |
+ OSError os_error(-1, "Invalid argument", OSError::kUnknown); |
+ Dart_Handle err = DartUtils::NewDartOSError(&os_error); |
+ if (Dart_IsError(err)) Dart_PropagateError(err); |
+ Dart_SetReturnValue(args, err); |
} |
} |