@@ -18,6 +18,8 @@ namespace node {
18
18
using v8::Context;
19
19
using v8::FunctionCallbackInfo;
20
20
using v8::Local;
21
+ using v8::MaybeLocal;
22
+ using v8::NewStringType;
21
23
using v8::Object;
22
24
using v8::String;
23
25
using v8::Value;
@@ -105,46 +107,43 @@ Permission::Permission() : enabled_(false) {
105
107
#undef V
106
108
}
107
109
108
- Local<Value> CreateAccessDeniedError (Environment* env,
109
- PermissionScope perm,
110
- const std::string_view& res) {
111
- Local<Value> err = ERR_ACCESS_DENIED (env->isolate ());
112
- CHECK (err->IsObject ());
113
- if (err.As <Object>()
114
- ->Set (env->context (),
115
- env->permission_string (),
116
- v8::String::NewFromUtf8 (env->isolate (),
117
- Permission::PermissionToString (perm),
118
- v8::NewStringType::kNormal )
119
- .ToLocalChecked ())
110
+ MaybeLocal<Value> CreateAccessDeniedError (Environment* env,
111
+ PermissionScope perm,
112
+ const std::string_view& res) {
113
+ Local<Object> err = ERR_ACCESS_DENIED (env->isolate ());
114
+ Local<String> perm_string;
115
+ Local<String> resource_string;
116
+ if (!String::NewFromUtf8 (env->isolate (),
117
+ Permission::PermissionToString (perm),
118
+ NewStringType::kNormal )
119
+ .ToLocal (&perm_string) ||
120
+ !String::NewFromUtf8 (
121
+ env->isolate (), std::string (res).c_str (), NewStringType::kNormal )
122
+ .ToLocal (&resource_string) ||
123
+ err->Set (env->context (), env->permission_string (), perm_string)
120
124
.IsNothing () ||
121
- err.As <Object>()
122
- ->Set (env->context (),
123
- env->resource_string (),
124
- v8::String::NewFromUtf8 (env->isolate (),
125
- std::string (res).c_str (),
126
- v8::NewStringType::kNormal )
127
- .ToLocalChecked ())
128
- .IsNothing ())
129
- return Local<Value>();
125
+ err->Set (env->context (), env->resource_string (), resource_string)
126
+ .IsNothing ()) {
127
+ return MaybeLocal<Value>();
128
+ }
130
129
return err;
131
130
}
132
131
133
132
void Permission::ThrowAccessDenied (Environment* env,
134
133
PermissionScope perm,
135
134
const std::string_view& res) {
136
- Local <Value> err = CreateAccessDeniedError (env, perm, res);
135
+ MaybeLocal <Value> err = CreateAccessDeniedError (env, perm, res);
137
136
if (err.IsEmpty ()) return ;
138
- env->isolate ()->ThrowException (err);
137
+ env->isolate ()->ThrowException (err. ToLocalChecked () );
139
138
}
140
139
141
140
void Permission::AsyncThrowAccessDenied (Environment* env,
142
141
fs::FSReqBase* req_wrap,
143
142
PermissionScope perm,
144
143
const std::string_view& res) {
145
- Local <Value> err = CreateAccessDeniedError (env, perm, res);
144
+ MaybeLocal <Value> err = CreateAccessDeniedError (env, perm, res);
146
145
if (err.IsEmpty ()) return ;
147
- return req_wrap->Reject (err);
146
+ return req_wrap->Reject (err. ToLocalChecked () );
148
147
}
149
148
150
149
void Permission::EnablePermissions () {
0 commit comments