| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -567,9 +567,14 @@ void SlowCopy(const FunctionCallbackInfo<Value>& args) { | |||
| 567 | 567 | ArrayBufferViewContents<char> source(args[0]); | |
| 568 | 568 | SPREAD_BUFFER_ARG(args[1].As<Object>(), target); | |
| 569 | 569 | ||
| 570 | - const auto target_start = args[2]->Uint32Value(env->context()).ToChecked(); | ||
| 571 | - const auto source_start = args[3]->Uint32Value(env->context()).ToChecked(); | ||
| 572 | - const auto to_copy = args[4]->Uint32Value(env->context()).ToChecked(); | ||
| 570 | + uint32_t target_start; | ||
| 571 | + uint32_t source_start; | ||
| 572 | + uint32_t to_copy; | ||
| 573 | + if (!args[2]->Uint32Value(env->context()).To(&target_start) || | ||
| 574 | + !args[3]->Uint32Value(env->context()).To(&source_start) || | ||
| 575 | + !args[4]->Uint32Value(env->context()).To(&to_copy)) { | ||
| 576 | + return; | ||
| 577 | + } | ||
| 573 | 578 | ||
| 574 | 579 | memmove(target_data + target_start, source.data() + source_start, to_copy); | |
| 575 | 580 | args.GetReturnValue().Set(to_copy); | |
@@ -634,7 +639,9 @@ void Fill(const FunctionCallbackInfo<Value>& args) { | |||
| 634 | 639 | return; | |
| 635 | 640 | } | |
| 636 | 641 | ||
| 637 | - str_obj = args[1]->ToString(env->context()).ToLocalChecked(); | ||
| 642 | + if (!args[1]->ToString(env->context()).ToLocal(&str_obj)) { | ||
| 643 | + return; | ||
| 644 | + } | ||
| 638 | 645 | enc = ParseEncoding(env->isolate(), args[4], UTF8); | |
| 639 | 646 | ||
| 640 | 647 | // Can't use StringBytes::Write() in all cases. For example if attempting | |
@@ -697,7 +704,10 @@ void StringWrite(const FunctionCallbackInfo<Value>& args) { | |||
| 697 | 704 | ||
| 698 | 705 | THROW_AND_RETURN_IF_NOT_STRING(env, args[0], "argument"); | |
| 699 | 706 | ||
| 700 | - Local<String> str = args[0]->ToString(env->context()).ToLocalChecked(); | ||
| 707 | + Local<String> str; | ||
| 708 | + if (!args[0]->ToString(env->context()).ToLocal(&str)) { | ||
| 709 | + return; | ||
| 710 | + } | ||
| 701 | 711 | ||
| 702 | 712 | size_t offset = 0; | |
| 703 | 713 | size_t max_length = 0; | |
@@ -1238,10 +1248,12 @@ void GetZeroFillToggle(const FunctionCallbackInfo<Value>& args) { | |||
| 1238 | 1248 | ab = ArrayBuffer::New(env->isolate(), std::move(backing)); | |
| 1239 | 1249 | } | |
| 1240 | 1250 | ||
| 1241 | - ab->SetPrivate( | ||
| 1242 | - env->context(), | ||
| 1243 | - env->untransferable_object_private_symbol(), | ||
| 1244 | - True(env->isolate())).Check(); | ||
| 1251 | + if (ab->SetPrivate(env->context(), | ||
| 1252 | + env->untransferable_object_private_symbol(), | ||
| 1253 | + True(env->isolate())) | ||
| 1254 | + .IsNothing()) { | ||
| 1255 | + return; | ||
| 1256 | + } | ||
| 1245 | 1257 | ||
| 1246 | 1258 | args.GetReturnValue().Set(Uint32Array::New(ab, 0, 1)); | |
| 1247 | 1259 | } | |
@@ -1252,7 +1264,9 @@ void DetachArrayBuffer(const FunctionCallbackInfo<Value>& args) { | |||
| 1252 | 1264 | Local<ArrayBuffer> buf = args[0].As<ArrayBuffer>(); | |
| 1253 | 1265 | if (buf->IsDetachable()) { | |
| 1254 | 1266 | std::shared_ptr<BackingStore> store = buf->GetBackingStore(); | |
| 1255 | - buf->Detach(Local<Value>()).Check(); | ||
| 1267 | + if (buf->Detach(Local<Value>()).IsNothing()) { | ||
| 1268 | + return; | ||
| 1269 | + } | ||
| 1256 | 1270 | args.GetReturnValue().Set(ArrayBuffer::New(env->isolate(), store)); | |
| 1257 | 1271 | } | |
| 1258 | 1272 | } | |
@@ -1461,7 +1475,10 @@ void SlowWriteString(const FunctionCallbackInfo<Value>& args) { | |||
| 1461 | 1475 | ||
| 1462 | 1476 | THROW_AND_RETURN_IF_NOT_STRING(env, args[1], "argument"); | |
| 1463 | 1477 | ||
| 1464 | - Local<String> str = args[1]->ToString(env->context()).ToLocalChecked(); | ||
| 1478 | + Local<String> str; | ||
| 1479 | + if (!args[1]->ToString(env->context()).ToLocal(&str)) { | ||
| 1480 | + return; | ||
| 1481 | + } | ||
| 1465 | 1482 | ||
| 1466 | 1483 | size_t offset = 0; | |
| 1467 | 1484 | size_t max_length = 0; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,10 +6,15 @@ | |||
| 6 | 6 | ||
| 7 | 7 | namespace node { | |
| 8 | 8 | ||
| 9 | + using v8::EscapableHandleScope; | ||
| 10 | + using v8::JustVoid; | ||
| 9 | 11 | using v8::Local; | |
| 10 | - using v8::NewStringType; | ||
| 12 | + using v8::Maybe; | ||
| 13 | + using v8::MaybeLocal; | ||
| 14 | + using v8::Nothing; | ||
| 11 | 15 | using v8::Object; | |
| 12 | 16 | using v8::String; | |
| 17 | + using v8::Value; | ||
| 13 | 18 | ||
| 14 | 19 | std::vector<Dotenv::env_file_data> Dotenv::GetDataFromArgs( | |
| 15 | 20 | const std::vector<std::string>& args) { | |
@@ -59,50 +64,42 @@ std::vector<Dotenv::env_file_data> Dotenv::GetDataFromArgs( | |||
| 59 | 64 | return env_files; | |
| 60 | 65 | } | |
| 61 | 66 | ||
| 62 | - void Dotenv::SetEnvironment(node::Environment* env) { | ||
| 63 | - auto isolate = env->isolate(); | ||
| 67 | + Maybe<void> Dotenv::SetEnvironment(node::Environment* env) { | ||
| 68 | + Local<Value> name; | ||
| 69 | + Local<Value> val; | ||
| 70 | + auto context = env->context(); | ||
| 64 | 71 | ||
| 65 | 72 | for (const auto& entry : store_) { | |
| 66 | - auto key = entry.first; | ||
| 67 | - auto value = entry.second; | ||
| 68 | - | ||
| 69 | - auto existing = env->env_vars()->Get(key.data()); | ||
| 70 | - | ||
| 73 | + auto existing = env->env_vars()->Get(entry.first.data()); | ||
| 71 | 74 | if (!existing.has_value()) { | |
| 72 | - env->env_vars()->Set( | ||
| 73 | - isolate, | ||
| 74 | - v8::String::NewFromUtf8( | ||
| 75 | - isolate, key.data(), NewStringType::kNormal, key.size()) | ||
| 76 | - .ToLocalChecked(), | ||
| 77 | - v8::String::NewFromUtf8( | ||
| 78 | - isolate, value.data(), NewStringType::kNormal, value.size()) | ||
| 79 | - .ToLocalChecked()); | ||
| 75 | + if (!ToV8Value(context, entry.first).ToLocal(&name) || | ||
| 76 | + !ToV8Value(context, entry.second).ToLocal(&val)) { | ||
| 77 | + return Nothing<void>(); | ||
| 78 | + } | ||
| 79 | + env->env_vars()->Set(env->isolate(), name.As<String>(), val.As<String>()); | ||
| 80 | 80 | } | |
| 81 | 81 | } | |
| 82 | + | ||
| 83 | + return JustVoid(); | ||
| 82 | 84 | } | |
| 83 | 85 | ||
| 84 | - Local<Object> Dotenv::ToObject(Environment* env) const { | ||
| 86 | + MaybeLocal<Object> Dotenv::ToObject(Environment* env) const { | ||
| 87 | + EscapableHandleScope scope(env->isolate()); | ||
| 85 | 88 | Local<Object> result = Object::New(env->isolate()); | |
| 86 | 89 | ||
| 90 | + Local<Value> name; | ||
| 91 | + Local<Value> val; | ||
| 92 | + auto context = env->context(); | ||
| 93 | + | ||
| 87 | 94 | for (const auto& entry : store_) { | |
| 88 | - auto key = entry.first; | ||
| 89 | - auto value = entry.second; | ||
| 90 | - | ||
| 91 | - result | ||
| 92 | - ->Set( | ||
| 93 | - env->context(), | ||
| 94 | - v8::String::NewFromUtf8( | ||
| 95 | - env->isolate(), key.data(), NewStringType::kNormal, key.size()) | ||
| 96 | - .ToLocalChecked(), | ||
| 97 | - v8::String::NewFromUtf8(env->isolate(), | ||
| 98 | - value.data(), | ||
| 99 | - NewStringType::kNormal, | ||
| 100 | - value.size()) | ||
| 101 | - .ToLocalChecked()) | ||
| 102 | - .Check(); | ||
| 95 | + if (!ToV8Value(context, entry.first).ToLocal(&name) || | ||
| 96 | + !ToV8Value(context, entry.second).ToLocal(&val) || | ||
| 97 | + result->Set(context, name, val).IsNothing()) { | ||
| 98 | + return MaybeLocal<Object>(); | ||
| 99 | + } | ||
| 103 | 100 | } | |
| 104 | 101 | ||
| 105 | - return result; | ||
| 102 | + return scope.Escape(result); | ||
| 106 | 103 | } | |
| 107 | 104 | ||
| 108 | 105 | // Removes space characters (spaces, tabs and newlines) from | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -28,8 +28,8 @@ class Dotenv { | |||
| 28 | 28 | void ParseContent(const std::string_view content); | |
| 29 | 29 | ParseResult ParsePath(const std::string_view path); | |
| 30 | 30 | void AssignNodeOptionsIfAvailable(std::string* node_options) const; | |
| 31 | - void SetEnvironment(Environment* env); | ||
| 32 | - v8::Local<v8::Object> ToObject(Environment* env) const; | ||
| 31 | + v8::Maybe<void> SetEnvironment(Environment* env); | ||
| 32 | + v8::MaybeLocal<v8::Object> ToObject(Environment* env) const; | ||
| 33 | 33 | ||
| 34 | 34 | static std::vector<env_file_data> GetDataFromArgs( | |
| 35 | 35 | const std::vector<std::string>& args); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -511,7 +511,7 @@ static void LoadEnvFile(const v8::FunctionCallbackInfo<v8::Value>& args) { | |||
| 511 | 511 | ||
| 512 | 512 | switch (dotenv.ParsePath(path)) { | |
| 513 | 513 | case dotenv.ParseResult::Valid: { | |
| 514 | - dotenv.SetEnvironment(env); | ||
| 514 | + USE(dotenv.SetEnvironment(env)); | ||
| 515 | 515 | break; | |
| 516 | 516 | } | |
| 517 | 517 | case dotenv.ParseResult::InvalidContent: { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -244,7 +244,10 @@ static void ParseEnv(const FunctionCallbackInfo<Value>& args) { | |||
| 244 | 244 | Utf8Value content(env->isolate(), args[0]); | |
| 245 | 245 | Dotenv dotenv{}; | |
| 246 | 246 | dotenv.ParseContent(content.ToStringView()); | |
| 247 | - args.GetReturnValue().Set(dotenv.ToObject(env)); | ||
| 247 | + Local<Object> obj; | ||
| 248 | + if (dotenv.ToObject(env).ToLocal(&obj)) { | ||
| 249 | + args.GetReturnValue().Set(obj); | ||
| 250 | + } | ||
| 248 | 251 | } | |
| 249 | 252 | ||
| 250 | 253 | static void GetCallSites(const FunctionCallbackInfo<Value>& args) { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments