src: fixup errorhandling more in various places · nodejs/node@03936f3 · GitHub
Skip to content

Commit 03936f3

Browse files
jasnelladuh95
authored andcommitted
src: fixup errorhandling more in various places
PR-URL: #57852 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
1 parent 1c7396b commit 03936f3

8 files changed

Lines changed: 41 additions & 20 deletions

File tree

src/api/environment.cc

Lines changed: 5 additions & 2 deletions

src/js_stream.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,13 @@ int JSStream::DoWrite(WriteWrap* w,
117117
HandleScope scope(env()->isolate());
118118
Context::Scope context_scope(env()->context());
119119

120+
int value_int = UV_EPROTO;
121+
120122
MaybeStackBuffer<Local<Value>, 16> bufs_arr(count);
121123
for (size_t i = 0; i < count; i++) {
122-
bufs_arr[i] =
123-
Buffer::Copy(env(), bufs[i].base, bufs[i].len).ToLocalChecked();
124+
if (!Buffer::Copy(env(), bufs[i].base, bufs[i].len).ToLocal(&bufs_arr[i])) {
125+
return value_int;
126+
}
124127
}
125128

126129
Local<Value> argv[] = {
@@ -130,7 +133,6 @@ int JSStream::DoWrite(WriteWrap* w,
130133

131134
TryCatchScope try_catch(env());
132135
Local<Value> value;
133-
int value_int = UV_EPROTO;
134136
if (!MakeCallback(env()->onwrite_string(),
135137
arraysize(argv),
136138
argv).ToLocal(&value) ||

src/js_udp_wrap.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,9 @@ ssize_t JSUDPWrap::Send(uv_buf_t* bufs,
9999

100100
MaybeStackBuffer<Local<Value>, 16> buffers(nbufs);
101101
for (size_t i = 0; i < nbufs; i++) {
102-
buffers[i] = Buffer::Copy(env(), bufs[i].base, bufs[i].len)
103-
.ToLocalChecked();
102+
if (!Buffer::Copy(env(), bufs[i].base, bufs[i].len).ToLocal(&buffers[i])) {
103+
return value_int;
104+
}
104105
total_len += bufs[i].len;
105106
}
106107

src/node_contextify.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1366,7 +1366,12 @@ bool ContextifyScript::EvalMachine(Local<Context> context,
13661366
return false;
13671367
}
13681368

1369-
args.GetReturnValue().Set(result.ToLocalChecked());
1369+
// We checked for res being empty previously so this is a bit redundant
1370+
// but still safer than using ToLocalChecked.
1371+
Local<Value> res;
1372+
if (!result.ToLocal(&res)) return false;
1373+
1374+
args.GetReturnValue().Set(res);
13701375
return true;
13711376
}
13721377

src/node_http_common.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,11 @@ class NgRcBufPointer : public MemoryRetainer {
414414
const char* header_name = reinterpret_cast<const char*>(ptr.data());
415415
v8::Eternal<v8::String>& eternal = static_str_map[header_name];
416416
if (eternal.IsEmpty()) {
417-
v8::Local<v8::String> str =
418-
GetInternalizedString(env, ptr).ToLocalChecked();
417+
v8::Local<v8::String> str;
418+
if (!GetInternalizedString(env, ptr).ToLocal(&str)) {
419+
ptr.reset();
420+
return {};
421+
}
419422
eternal.Set(env->isolate(), str);
420423
return str;
421424
}

src/pipe_wrap.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,12 @@ MaybeLocal<Object> PipeWrap::Instantiate(Environment* env,
5353
EscapableHandleScope handle_scope(env->isolate());
5454
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
5555
CHECK_EQ(false, env->pipe_constructor_template().IsEmpty());
56-
Local<Function> constructor = env->pipe_constructor_template()
57-
->GetFunction(env->context())
58-
.ToLocalChecked();
59-
CHECK_EQ(false, constructor.IsEmpty());
56+
Local<Function> constructor;
57+
if (!env->pipe_constructor_template()
58+
->GetFunction(env->context())
59+
.ToLocal(&constructor)) {
60+
return {};
61+
}
6062
Local<Value> type_value = Int32::New(env->isolate(), type);
6163
return handle_scope.EscapeMaybe(
6264
constructor->NewInstance(env->context(), 1, &type_value));

src/tcp_wrap.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,12 @@ MaybeLocal<Object> TCPWrap::Instantiate(Environment* env,
5959
EscapableHandleScope handle_scope(env->isolate());
6060
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
6161
CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false);
62-
Local<Function> constructor = env->tcp_constructor_template()
63-
->GetFunction(env->context())
64-
.ToLocalChecked();
65-
CHECK_EQ(constructor.IsEmpty(), false);
62+
Local<Function> constructor;
63+
if (!env->tcp_constructor_template()
64+
->GetFunction(env->context())
65+
.ToLocal(&constructor)) {
66+
return {};
67+
}
6668
Local<Value> type_value = Int32::New(env->isolate(), type);
6769
return handle_scope.EscapeMaybe(
6870
constructor->NewInstance(env->context(), 1, &type_value));

src/util.cc

Lines changed: 5 additions & 2 deletions

0 commit comments

Comments
 (0)