@@ -344,8 +344,7 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
344344 uint8_t * buffer = NULL ;
345345 Dart_Handle result = IOBuffer::Allocate (length, &buffer);
346346 if (Dart_IsNull (result)) {
347- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
348- return ;
347+ Dart_ThrowException (DartUtils::NewDartOSError ());
349348 }
350349 if (Dart_IsError (result)) {
351350 Dart_PropagateError (result);
@@ -359,8 +358,7 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
359358 uint8_t * new_buffer = NULL ;
360359 Dart_Handle new_result = IOBuffer::Allocate (bytes_read, &new_buffer);
361360 if (Dart_IsNull (new_result)) {
362- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
363- return ;
361+ Dart_ThrowException (DartUtils::NewDartOSError ());
364362 }
365363 if (Dart_IsError (new_result)) {
366364 Dart_PropagateError (new_result);
@@ -374,11 +372,11 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
374372 Dart_SetReturnValue (args, Dart_Null ());
375373 } else {
376374 ASSERT (bytes_read == -1 );
377- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
375+ Dart_ThrowException ( DartUtils::NewDartOSError ());
378376 }
379377 } else {
380378 OSError os_error (-1 , " Invalid argument" , OSError::kUnknown );
381- Dart_SetReturnValue (args, DartUtils::NewDartOSError (&os_error));
379+ Dart_ThrowException ( DartUtils::NewDartOSError (&os_error));
382380 }
383381}
384382
@@ -407,17 +405,15 @@ void FUNCTION_NAME(Socket_RecvFrom)(Dart_NativeArguments args) {
407405 }
408406 if (bytes_read < 0 ) {
409407 ASSERT (bytes_read == -1 );
410- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
411- return ;
408+ Dart_ThrowException (DartUtils::NewDartOSError ());
412409 }
413410
414411 // Datagram data read. Copy into buffer of the exact size,
415412 ASSERT (bytes_read > 0 );
416413 uint8_t * data_buffer = NULL ;
417414 Dart_Handle data = IOBuffer::Allocate (bytes_read, &data_buffer);
418415 if (Dart_IsNull (data)) {
419- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
420- return ;
416+ Dart_ThrowException (DartUtils::NewDartOSError ());
421417 }
422418 if (Dart_IsError (data)) {
423419 Dart_PropagateError (data);
@@ -497,9 +493,13 @@ void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) {
497493 }
498494 } else {
499495 // Extract OSError before we release data, as it may override the error.
500- OSError os_error;
501- Dart_TypedDataReleaseData (buffer_obj);
502- Dart_SetReturnValue (args, DartUtils::NewDartOSError (&os_error));
496+ Dart_Handle error;
497+ {
498+ OSError os_error;
499+ Dart_TypedDataReleaseData (buffer_obj);
500+ error = DartUtils::NewDartOSError (&os_error);
501+ }
502+ Dart_ThrowException (error);
503503 }
504504}
505505
@@ -533,28 +533,30 @@ void FUNCTION_NAME(Socket_SendTo)(Dart_NativeArguments args) {
533533 Dart_SetIntegerReturnValue (args, bytes_written);
534534 } else {
535535 // Extract OSError before we release data, as it may override the error.
536- OSError os_error;
537- Dart_TypedDataReleaseData (buffer_obj);
538- Dart_SetReturnValue (args, DartUtils::NewDartOSError (&os_error));
536+ Dart_Handle error;
537+ {
538+ OSError os_error;
539+ Dart_TypedDataReleaseData (buffer_obj);
540+ error = DartUtils::NewDartOSError (&os_error);
541+ }
542+ Dart_ThrowException (error);
539543 }
540544}
541545
542546void FUNCTION_NAME (Socket_GetPort)(Dart_NativeArguments args) {
543547 Socket* socket =
544548 Socket::GetSocketIdNativeField (Dart_GetNativeArgument (args, 0 ));
545- OSError os_error;
546549 intptr_t port = SocketBase::GetPort (socket->fd ());
547550 if (port > 0 ) {
548551 Dart_SetIntegerReturnValue (args, port);
549552 } else {
550- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
553+ Dart_ThrowException ( DartUtils::NewDartOSError ());
551554 }
552555}
553556
554557void FUNCTION_NAME (Socket_GetRemotePeer)(Dart_NativeArguments args) {
555558 Socket* socket =
556559 Socket::GetSocketIdNativeField (Dart_GetNativeArgument (args, 0 ));
557- OSError os_error;
558560 intptr_t port = 0 ;
559561 SocketAddress* addr = SocketBase::GetRemotePeer (socket->fd (), &port);
560562 if (addr != NULL ) {
@@ -572,7 +574,7 @@ void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) {
572574 Dart_SetReturnValue (args, list);
573575 delete addr;
574576 } else {
575- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
577+ Dart_ThrowException ( DartUtils::NewDartOSError ());
576578 }
577579}
578580
@@ -660,7 +662,7 @@ void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) {
660662 } else if (new_socket == ServerSocket::kTemporaryFailure ) {
661663 Dart_SetReturnValue (args, Dart_False ());
662664 } else {
663- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
665+ Dart_ThrowException ( DartUtils::NewDartOSError ());
664666 }
665667}
666668
@@ -840,7 +842,7 @@ void FUNCTION_NAME(Socket_GetOption)(Dart_NativeArguments args) {
840842 }
841843 // In case of failure the return value is not set above.
842844 if (!ok) {
843- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
845+ Dart_ThrowException ( DartUtils::NewDartOSError ());
844846 }
845847}
846848
@@ -881,10 +883,8 @@ void FUNCTION_NAME(Socket_SetOption)(Dart_NativeArguments args) {
881883 Dart_PropagateError (Dart_NewApiError (" Value outside expected range" ));
882884 break ;
883885 }
884- if (result) {
885- Dart_SetReturnValue (args, Dart_Null ());
886- } else {
887- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
886+ if (!result) {
887+ Dart_ThrowException (DartUtils::NewDartOSError ());
888888 }
889889}
890890
@@ -910,10 +910,8 @@ void FUNCTION_NAME(Socket_SetRawOption)(Dart_NativeArguments args) {
910910
911911 Dart_TypedDataReleaseData (data_obj);
912912
913- if (result) {
914- Dart_SetReturnValue (args, Dart_Null ());
915- } else {
916- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
913+ if (!result) {
914+ Dart_ThrowException (DartUtils::NewDartOSError ());
917915 }
918916}
919917
@@ -938,11 +936,8 @@ void FUNCTION_NAME(Socket_GetRawOption)(Dart_NativeArguments args) {
938936 static_cast <int >(option), data, &int_length);
939937
940938 Dart_TypedDataReleaseData (data_obj);
941-
942- if (result) {
943- Dart_SetReturnValue (args, Dart_Null ());
944- } else {
945- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
939+ if (!result) {
940+ Dart_ThrowException (DartUtils::NewDartOSError ());
946941 }
947942}
948943
@@ -999,11 +994,9 @@ void FUNCTION_NAME(Socket_JoinMulticast)(Dart_NativeArguments args) {
999994 }
1000995 int interfaceIndex =
1001996 DartUtils::GetIntegerValue (Dart_GetNativeArgument (args, 3 ));
1002- if (SocketBase::JoinMulticast (socket->fd (), addr, interface,
1003- interfaceIndex)) {
1004- Dart_SetReturnValue (args, Dart_Null ());
1005- } else {
1006- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
997+ if (!SocketBase::JoinMulticast (socket->fd (), addr, interface,
998+ interfaceIndex)) {
999+ Dart_ThrowException (DartUtils::NewDartOSError ());
10071000 }
10081001}
10091002
@@ -1018,11 +1011,9 @@ void FUNCTION_NAME(Socket_LeaveMulticast)(Dart_NativeArguments args) {
10181011 }
10191012 int interfaceIndex =
10201013 DartUtils::GetIntegerValue (Dart_GetNativeArgument (args, 3 ));
1021- if (SocketBase::LeaveMulticast (socket->fd (), addr, interface,
1022- interfaceIndex)) {
1023- Dart_SetReturnValue (args, Dart_Null ());
1024- } else {
1025- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
1014+ if (!SocketBase::LeaveMulticast (socket->fd (), addr, interface,
1015+ interfaceIndex)) {
1016+ Dart_ThrowException (DartUtils::NewDartOSError ());
10261017 }
10271018}
10281019
0 commit comments