Skip to content

Commit

Permalink
src: replace ToLocalChecked uses with ToLocal in node-file
Browse files Browse the repository at this point in the history
PR-URL: #53869
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
  • Loading branch information
jasnell authored and marco-ippolito committed Aug 19, 2024
1 parent 51ba566 commit b71250a
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 20 deletions.
32 changes: 23 additions & 9 deletions src/node_file-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -221,9 +221,15 @@ void FSReqPromise<AliasedBufferT>::Reject(v8::Local<v8::Value> reject) {
finished_ = true;
v8::HandleScope scope(env()->isolate());
InternalCallbackScope callback_scope(this);
v8::Local<v8::Value> value =
object()->Get(env()->context(),
env()->promise_string()).ToLocalChecked();
v8::Local<v8::Value> value;
if (!object()
->Get(env()->context(), env()->promise_string())
.ToLocal(&value)) {
// If we hit this, getting the value from the object failed and
// an error was likely scheduled. We could try to reject the promise
// but let's just allow the error to propagate.
return;
}
v8::Local<v8::Promise::Resolver> resolver = value.As<v8::Promise::Resolver>();
USE(resolver->Reject(env()->context(), reject).FromJust());
}
Expand All @@ -233,9 +239,13 @@ void FSReqPromise<AliasedBufferT>::Resolve(v8::Local<v8::Value> value) {
finished_ = true;
v8::HandleScope scope(env()->isolate());
InternalCallbackScope callback_scope(this);
v8::Local<v8::Value> val =
object()->Get(env()->context(),
env()->promise_string()).ToLocalChecked();
v8::Local<v8::Value> val;
if (!object()->Get(env()->context(), env()->promise_string()).ToLocal(&val)) {
// If we hit this, getting the value from the object failed and
// an error was likely scheduled. We could try to reject the promise
// but let's just allow the error to propagate.
return;
}
v8::Local<v8::Promise::Resolver> resolver = val.As<v8::Promise::Resolver>();
USE(resolver->Resolve(env()->context(), value).FromJust());
}
Expand All @@ -255,9 +265,13 @@ void FSReqPromise<AliasedBufferT>::ResolveStatFs(const uv_statfs_t* stat) {
template <typename AliasedBufferT>
void FSReqPromise<AliasedBufferT>::SetReturnValue(
const v8::FunctionCallbackInfo<v8::Value>& args) {
v8::Local<v8::Value> val =
object()->Get(env()->context(),
env()->promise_string()).ToLocalChecked();
v8::Local<v8::Value> val;
if (!object()->Get(env()->context(), env()->promise_string()).ToLocal(&val)) {
// If we hit this, getting the value from the object failed and
// an error was likely scheduled. We could try to reject the promise
// but let's just allow the error to propagate.
return;
}
v8::Local<v8::Promise::Resolver> resolver = val.As<v8::Promise::Resolver>();
args.GetReturnValue().Set(resolver->GetPromise());
}
Expand Down
33 changes: 22 additions & 11 deletions src/node_file.cc
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,8 @@ MaybeLocal<Promise> FileHandle::ClosePromise() {

auto maybe_resolver = Promise::Resolver::New(context);
CHECK(!maybe_resolver.IsEmpty());
Local<Promise::Resolver> resolver = maybe_resolver.ToLocalChecked();
Local<Promise::Resolver> resolver;
if (!maybe_resolver.ToLocal(&resolver)) return {};
Local<Promise> promise = resolver.As<Promise>();

Local<Object> close_req_obj;
Expand Down Expand Up @@ -868,10 +869,12 @@ void AfterStringPath(uv_fs_t* req) {
req->path,
req_wrap->encoding(),
&error);
if (link.IsEmpty())
if (link.IsEmpty()) {
req_wrap->Reject(error);
else
req_wrap->Resolve(link.ToLocalChecked());
} else {
Local<Value> val;
if (link.ToLocal(&val)) req_wrap->Resolve(val);
}
}
}

Expand All @@ -888,10 +891,12 @@ void AfterStringPtr(uv_fs_t* req) {
static_cast<const char*>(req->ptr),
req_wrap->encoding(),
&error);
if (link.IsEmpty())
if (link.IsEmpty()) {
req_wrap->Reject(error);
else
req_wrap->Resolve(link.ToLocalChecked());
} else {
Local<Value> val;
if (link.ToLocal(&val)) req_wrap->Resolve(val);
}
}
}

Expand Down Expand Up @@ -2308,7 +2313,8 @@ static void WriteBuffers(const FunctionCallbackInfo<Value>& args) {
MaybeStackBuffer<uv_buf_t> iovs(chunks->Length());

for (uint32_t i = 0; i < iovs.length(); i++) {
Local<Value> chunk = chunks->Get(env->context(), i).ToLocalChecked();
Local<Value> chunk;
if (!chunks->Get(env->context(), i).ToLocal(&chunk)) return;
CHECK(Buffer::HasInstance(chunk));
iovs[i] = uv_buf_init(Buffer::Data(chunk), Buffer::Length(chunk));
}
Expand Down Expand Up @@ -2642,8 +2648,12 @@ static void ReadFileUtf8(const FunctionCallbackInfo<Value>& args) {
}
FS_SYNC_TRACE_END(read);

args.GetReturnValue().Set(
ToV8Value(env->context(), result, isolate).ToLocalChecked());
Local<Value> val;
if (!ToV8Value(env->context(), result, isolate).ToLocal(&val)) {
return;
}

args.GetReturnValue().Set(val);
}

// Wrapper for readv(2).
Expand Down Expand Up @@ -2671,7 +2681,8 @@ static void ReadBuffers(const FunctionCallbackInfo<Value>& args) {

// Init uv buffers from ArrayBufferViews
for (uint32_t i = 0; i < iovs.length(); i++) {
Local<Value> buffer = buffers->Get(env->context(), i).ToLocalChecked();
Local<Value> buffer;
if (!buffers->Get(env->context(), i).ToLocal(&buffer)) return;
CHECK(Buffer::HasInstance(buffer));
iovs[i] = uv_buf_init(Buffer::Data(buffer), Buffer::Length(buffer));
}
Expand Down

0 comments on commit b71250a

Please sign in to comment.