@@ -344,8 +344,7 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
344
344
uint8_t * buffer = NULL ;
345
345
Dart_Handle result = IOBuffer::Allocate (length, &buffer);
346
346
if (Dart_IsNull (result)) {
347
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
348
- return ;
347
+ Dart_ThrowException (DartUtils::NewDartOSError ());
349
348
}
350
349
if (Dart_IsError (result)) {
351
350
Dart_PropagateError (result);
@@ -359,8 +358,7 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
359
358
uint8_t * new_buffer = NULL ;
360
359
Dart_Handle new_result = IOBuffer::Allocate (bytes_read, &new_buffer);
361
360
if (Dart_IsNull (new_result)) {
362
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
363
- return ;
361
+ Dart_ThrowException (DartUtils::NewDartOSError ());
364
362
}
365
363
if (Dart_IsError (new_result)) {
366
364
Dart_PropagateError (new_result);
@@ -374,11 +372,11 @@ void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
374
372
Dart_SetReturnValue (args, Dart_Null ());
375
373
} else {
376
374
ASSERT (bytes_read == -1 );
377
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
375
+ Dart_ThrowException ( DartUtils::NewDartOSError ());
378
376
}
379
377
} else {
380
378
OSError os_error (-1 , " Invalid argument" , OSError::kUnknown );
381
- Dart_SetReturnValue (args, DartUtils::NewDartOSError (&os_error));
379
+ Dart_ThrowException ( DartUtils::NewDartOSError (&os_error));
382
380
}
383
381
}
384
382
@@ -407,17 +405,15 @@ void FUNCTION_NAME(Socket_RecvFrom)(Dart_NativeArguments args) {
407
405
}
408
406
if (bytes_read < 0 ) {
409
407
ASSERT (bytes_read == -1 );
410
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
411
- return ;
408
+ Dart_ThrowException (DartUtils::NewDartOSError ());
412
409
}
413
410
414
411
// Datagram data read. Copy into buffer of the exact size,
415
412
ASSERT (bytes_read > 0 );
416
413
uint8_t * data_buffer = NULL ;
417
414
Dart_Handle data = IOBuffer::Allocate (bytes_read, &data_buffer);
418
415
if (Dart_IsNull (data)) {
419
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
420
- return ;
416
+ Dart_ThrowException (DartUtils::NewDartOSError ());
421
417
}
422
418
if (Dart_IsError (data)) {
423
419
Dart_PropagateError (data);
@@ -497,9 +493,13 @@ void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) {
497
493
}
498
494
} else {
499
495
// 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);
503
503
}
504
504
}
505
505
@@ -533,28 +533,30 @@ void FUNCTION_NAME(Socket_SendTo)(Dart_NativeArguments args) {
533
533
Dart_SetIntegerReturnValue (args, bytes_written);
534
534
} else {
535
535
// 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);
539
543
}
540
544
}
541
545
542
546
void FUNCTION_NAME (Socket_GetPort)(Dart_NativeArguments args) {
543
547
Socket* socket =
544
548
Socket::GetSocketIdNativeField (Dart_GetNativeArgument (args, 0 ));
545
- OSError os_error;
546
549
intptr_t port = SocketBase::GetPort (socket->fd ());
547
550
if (port > 0 ) {
548
551
Dart_SetIntegerReturnValue (args, port);
549
552
} else {
550
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
553
+ Dart_ThrowException ( DartUtils::NewDartOSError ());
551
554
}
552
555
}
553
556
554
557
void FUNCTION_NAME (Socket_GetRemotePeer)(Dart_NativeArguments args) {
555
558
Socket* socket =
556
559
Socket::GetSocketIdNativeField (Dart_GetNativeArgument (args, 0 ));
557
- OSError os_error;
558
560
intptr_t port = 0 ;
559
561
SocketAddress* addr = SocketBase::GetRemotePeer (socket->fd (), &port);
560
562
if (addr != NULL ) {
@@ -572,7 +574,7 @@ void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) {
572
574
Dart_SetReturnValue (args, list);
573
575
delete addr;
574
576
} else {
575
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
577
+ Dart_ThrowException ( DartUtils::NewDartOSError ());
576
578
}
577
579
}
578
580
@@ -660,7 +662,7 @@ void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) {
660
662
} else if (new_socket == ServerSocket::kTemporaryFailure ) {
661
663
Dart_SetReturnValue (args, Dart_False ());
662
664
} else {
663
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
665
+ Dart_ThrowException ( DartUtils::NewDartOSError ());
664
666
}
665
667
}
666
668
@@ -840,7 +842,7 @@ void FUNCTION_NAME(Socket_GetOption)(Dart_NativeArguments args) {
840
842
}
841
843
// In case of failure the return value is not set above.
842
844
if (!ok) {
843
- Dart_SetReturnValue (args, DartUtils::NewDartOSError ());
845
+ Dart_ThrowException ( DartUtils::NewDartOSError ());
844
846
}
845
847
}
846
848
@@ -881,10 +883,8 @@ void FUNCTION_NAME(Socket_SetOption)(Dart_NativeArguments args) {
881
883
Dart_PropagateError (Dart_NewApiError (" Value outside expected range" ));
882
884
break ;
883
885
}
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 ());
888
888
}
889
889
}
890
890
@@ -910,10 +910,8 @@ void FUNCTION_NAME(Socket_SetRawOption)(Dart_NativeArguments args) {
910
910
911
911
Dart_TypedDataReleaseData (data_obj);
912
912
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 ());
917
915
}
918
916
}
919
917
@@ -938,11 +936,8 @@ void FUNCTION_NAME(Socket_GetRawOption)(Dart_NativeArguments args) {
938
936
static_cast <int >(option), data, &int_length);
939
937
940
938
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 ());
946
941
}
947
942
}
948
943
@@ -999,11 +994,9 @@ void FUNCTION_NAME(Socket_JoinMulticast)(Dart_NativeArguments args) {
999
994
}
1000
995
int interfaceIndex =
1001
996
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 ());
1007
1000
}
1008
1001
}
1009
1002
@@ -1018,11 +1011,9 @@ void FUNCTION_NAME(Socket_LeaveMulticast)(Dart_NativeArguments args) {
1018
1011
}
1019
1012
int interfaceIndex =
1020
1013
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 ());
1026
1017
}
1027
1018
}
1028
1019
0 commit comments