Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 0b81916

Browse files
zichanggcommit-bot@chromium.org
authored andcommitted
[dart:io] update return type of native calls
Some cleans up coming from https://dart-review.googlesource.com/c/sdk/+/136322. Update some inaccurate return types of native calls. Also update null checks for resourceInfo with nnbd flavor. Change-Id: I937f204e5cd8331df454c81d58e5893be616862e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137140 Commit-Queue: Zichang Guo <[email protected]> Reviewed-by: Siva Annamalai <[email protected]>
1 parent 86845ca commit 0b81916

File tree

6 files changed

+295
-321
lines changed

6 files changed

+295
-321
lines changed

runtime/bin/socket.cc

Lines changed: 36 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

542546
void 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

554557
void 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

runtime/include/dart_api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ typedef struct _Dart_Isolate* Dart_Isolate;
164164
* 2 intptr_t* length = 0;
165165
* 3 result = Dart_StringLength(arg, &length);
166166
* 4 if (Dart_IsError(result)) {
167-
* 5 return result
167+
* 5 return result;
168168
* 6 }
169169
* 7 return Dart_NewBoolean(length > 100);
170170
* 8 }

0 commit comments

Comments
 (0)