From 70dcde230f183ef2c40481ab5b3213aac5653139 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Wed, 4 Sep 2024 16:03:05 -0700 Subject: [PATCH] src: convert more Maybe to Maybe --- src/crypto/crypto_keygen.cc | 12 ++++++++---- src/crypto/crypto_keygen.h | 26 ++++++++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/crypto/crypto_keygen.cc b/src/crypto/crypto_keygen.cc index ba5bc1e90e55cb..aa0c29e8f7e62d 100644 --- a/src/crypto/crypto_keygen.cc +++ b/src/crypto/crypto_keygen.cc @@ -18,6 +18,7 @@ using v8::Just; using v8::JustVoid; using v8::Local; using v8::Maybe; +using v8::MaybeLocal; using v8::Object; using v8::Uint32; using v8::Value; @@ -79,12 +80,15 @@ KeyGenJobStatus SecretKeyGenTraits::DoKeyGen(Environment* env, return KeyGenJobStatus::OK; } -Maybe SecretKeyGenTraits::EncodeKey(Environment* env, - SecretKeyGenConfig* params, - Local* result) { +MaybeLocal SecretKeyGenTraits::EncodeKey(Environment* env, + SecretKeyGenConfig* params) { std::shared_ptr data = KeyObjectData::CreateSecret(std::move(params->out)); - return Just(KeyObjectHandle::Create(env, data).ToLocal(result)); + Local ret; + if (!KeyObjectHandle::Create(env, data).ToLocal(&ret)) { + return MaybeLocal(); + } + return ret; } namespace Keygen { diff --git a/src/crypto/crypto_keygen.h b/src/crypto/crypto_keygen.h index 19660f83f0c11d..9ec5fc7bf5ba84 100644 --- a/src/crypto/crypto_keygen.h +++ b/src/crypto/crypto_keygen.h @@ -99,11 +99,16 @@ class KeyGenJob final : public CryptoJob { AdditionalParams* params = CryptoJob::params(); if (status_ == KeyGenJobStatus::OK) { - v8::Maybe ret = KeyGenTraits::EncodeKey(env, params, result); - if (ret.IsJust() && ret.FromJust()) { + v8::TryCatch try_catch(env->isolate()); + if (KeyGenTraits::EncodeKey(env, params).ToLocal(result)) { *err = Undefined(env->isolate()); + } else { + CHECK(try_catch.HasCaught()); + CHECK(try_catch.CanContinue()); + *result = Undefined(env->isolate()); + *err = try_catch.Exception(); } - return ret; + return v8::Just(true); } if (errors->Empty()) @@ -178,10 +183,9 @@ struct KeyPairGenTraits final { return KeyGenJobStatus::OK; } - static v8::Maybe EncodeKey( + static v8::MaybeLocal EncodeKey( Environment* env, - AdditionalParameters* params, - v8::Local* result) { + AdditionalParameters* params) { v8::Local keys[2]; if (params->key .ToEncodedPublicKey(env, params->public_key_encoding, &keys[0]) @@ -189,10 +193,9 @@ struct KeyPairGenTraits final { params->key .ToEncodedPrivateKey(env, params->private_key_encoding, &keys[1]) .IsNothing()) { - return v8::Nothing(); + return v8::MaybeLocal(); } - *result = v8::Array::New(env->isolate(), keys, arraysize(keys)); - return v8::Just(true); + return v8::Array::New(env->isolate(), keys, arraysize(keys)); } }; @@ -221,10 +224,9 @@ struct SecretKeyGenTraits final { Environment* env, SecretKeyGenConfig* params); - static v8::Maybe EncodeKey( + static v8::MaybeLocal EncodeKey( Environment* env, - SecretKeyGenConfig* params, - v8::Local* result); + SecretKeyGenConfig* params); }; template