Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
src: remove useless dereferencing in THROW_...
Our `THROW_...` helpers can handle strings or string views just fine,
all this does is add an extra `strlen()` call that can and should
be avoided.
  • Loading branch information
addaleax committed Sep 28, 2025
commit 027d4d154f44db1eace0a5b078dbc9337bc38d9b
2 changes: 1 addition & 1 deletion src/crypto/crypto_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1460,7 +1460,7 @@ void SecureContext::Init(const FunctionCallbackInfo<Value>& args) {
method = TLS_client_method();
} else {
THROW_ERR_TLS_INVALID_PROTOCOL_METHOD(
env, "Unknown method: %s", *sslmethod);
env, "Unknown method: %s", sslmethod);
return;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/crypto/crypto_hash.cc
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ Maybe<void> HashTraits::AdditionalConfig(
Utf8Value digest(env->isolate(), args[offset]);
params->digest = ncrypto::getDigestByName(*digest);
if (params->digest == nullptr) [[unlikely]] {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *digest);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", digest);
return Nothing<void>();
}

Expand Down
2 changes: 1 addition & 1 deletion src/crypto/crypto_hkdf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Maybe<void> HKDFTraits::AdditionalConfig(
Utf8Value hash(env->isolate(), args[offset]);
params->digest = Digest::FromName(*hash);
if (!params->digest) [[unlikely]] {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *hash);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", hash);
return Nothing<void>();
}

Expand Down
2 changes: 1 addition & 1 deletion src/crypto/crypto_hmac.cc
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ Maybe<void> HmacTraits::AdditionalConfig(
Utf8Value digest(env->isolate(), args[offset + 1]);
params->digest = Digest::FromName(*digest);
if (!params->digest) [[unlikely]] {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *digest);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", digest);
return Nothing<void>();
}

Expand Down
2 changes: 1 addition & 1 deletion src/crypto/crypto_pbkdf2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ Maybe<void> PBKDF2Traits::AdditionalConfig(
Utf8Value name(args.GetIsolate(), args[offset + 4]);
params->digest = Digest::FromName(*name);
if (!params->digest) [[unlikely]] {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *name);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", name);
return Nothing<void>();
}

Expand Down
7 changes: 3 additions & 4 deletions src/crypto/crypto_rsa.cc
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ Maybe<void> RsaKeyGenTraits::AdditionalConfig(
Utf8Value digest(env->isolate(), args[*offset]);
params->params.md = Digest::FromName(*digest);
if (!params->params.md) {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *digest);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", digest);
return Nothing<void>();
}
}
Expand All @@ -153,8 +153,7 @@ Maybe<void> RsaKeyGenTraits::AdditionalConfig(
Utf8Value digest(env->isolate(), args[*offset + 1]);
params->params.mgf1_md = Digest::FromName(*digest);
if (!params->params.mgf1_md) {
THROW_ERR_CRYPTO_INVALID_DIGEST(
env, "Invalid MGF1 digest: %s", *digest);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid MGF1 digest: %s", digest);
return Nothing<void>();
}
}
Expand Down Expand Up @@ -279,7 +278,7 @@ Maybe<void> RSACipherTraits::AdditionalConfig(
Utf8Value digest(env->isolate(), args[offset + 1]);
params->digest = Digest::FromName(*digest);
if (!params->digest) {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *digest);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", digest);
return Nothing<void>();
}

Expand Down
2 changes: 1 addition & 1 deletion src/crypto/crypto_sig.cc
Original file line number Diff line number Diff line change
Expand Up @@ -627,7 +627,7 @@ Maybe<void> SignTraits::AdditionalConfig(
Utf8Value digest(env->isolate(), args[offset + 6]);
params->digest = Digest::FromName(*digest);
if (!params->digest) [[unlikely]] {
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", *digest);
THROW_ERR_CRYPTO_INVALID_DIGEST(env, "Invalid digest: %s", digest);
return Nothing<void>();
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/node_binding.cc
Original file line number Diff line number Diff line change
Expand Up @@ -487,9 +487,9 @@ void DLOpen(const FunctionCallbackInfo<Value>& args) {
dlib->Close();
#ifdef _WIN32
// Windows needs to add the filename into the error message
errmsg += *filename;
errmsg += filename.ToStringView();
#endif // _WIN32
THROW_ERR_DLOPEN_FAILED(env, "%s", errmsg.c_str());
THROW_ERR_DLOPEN_FAILED(env, "%s", errmsg);
return false;
}

Expand Down Expand Up @@ -520,7 +520,7 @@ void DLOpen(const FunctionCallbackInfo<Value>& args) {
if (mp == nullptr || mp->nm_context_register_func == nullptr) {
dlib->Close();
THROW_ERR_DLOPEN_FAILED(
env, "Module did not self-register: '%s'.", *filename);
env, "Module did not self-register: '%s'.", filename);
return false;
}
}
Expand Down Expand Up @@ -649,7 +649,7 @@ void GetInternalBinding(const FunctionCallbackInfo<Value>& args) {
exports = InitInternalBinding(realm, mod);
realm->internal_bindings.insert(mod);
} else {
return THROW_ERR_INVALID_MODULE(isolate, "No such binding: %s", *module_v);
return THROW_ERR_INVALID_MODULE(isolate, "No such binding: %s", module_v);
}

args.GetReturnValue().Set(exports);
Expand Down Expand Up @@ -680,7 +680,7 @@ void GetLinkedBinding(const FunctionCallbackInfo<Value>& args) {

if (mod == nullptr) {
return THROW_ERR_INVALID_MODULE(
env, "No such binding was linked: %s", *module_name_v);
env, "No such binding was linked: %s", module_name_v);
}

Local<Object> module = Object::New(env->isolate());
Expand Down
2 changes: 1 addition & 1 deletion src/node_process_methods.cc
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ static void LoadEnvFile(const v8::FunctionCallbackInfo<v8::Value>& args) {
}
case dotenv.ParseResult::InvalidContent: {
THROW_ERR_INVALID_ARG_TYPE(
env, "Contents of '%s' should be a valid string.", path.c_str());
env, "Contents of '%s' should be a valid string.", path);
break;
}
case dotenv.ParseResult::FileError: {
Expand Down
2 changes: 1 addition & 1 deletion src/node_report.cc
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ static void PrintJavaScriptStack(JSONWriter* writer,
const int column = frame->GetColumn();

std::string stack_line = SPrintF(
"at %s (%s:%d:%d)", *function_name, *script_name, line_number, column);
"at %s (%s:%d:%d)", function_name, script_name, line_number, column);
writer->json_element(stack_line);
}
writer->json_arrayend();
Expand Down
2 changes: 1 addition & 1 deletion src/node_sqlite.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1963,7 +1963,7 @@ bool StatementSync::BindParams(const FunctionCallbackInfo<Value>& args) {
continue;
} else {
THROW_ERR_INVALID_STATE(
env(), "Unknown named parameter '%s'", *utf8_key);
env(), "Unknown named parameter '%s'", utf8_key);
return false;
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/quic/defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@ bool SetOption(Environment* env,
if (!value->IsUint32()) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "The %s option must be an uint32", *nameStr);
env, "The %s option must be an uint32", nameStr);
return false;
}
v8::Local<v8::Uint32> num;
if (!value->ToUint32(env->context()).ToLocal(&num)) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "The %s option must be an uint32", *nameStr);
env, "The %s option must be an uint32", nameStr);
return false;
}
options->*member = num->Value();
Expand All @@ -95,7 +95,7 @@ bool SetOption(Environment* env,
if (!value->IsBigInt() && !value->IsNumber()) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "option %s must be a bigint or number", *nameStr);
env, "option %s must be a bigint or number", nameStr);
return false;
}
DCHECK_IMPLIES(!value->IsBigInt(), value->IsNumber());
Expand All @@ -106,14 +106,14 @@ bool SetOption(Environment* env,
val = value.As<v8::BigInt>()->Uint64Value(&lossless);
if (!lossless) {
Utf8Value label(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(env, "option %s is out of range", *label);
THROW_ERR_INVALID_ARG_VALUE(env, "option %s is out of range", label);
return false;
}
} else {
double dbl = value.As<v8::Number>()->Value();
if (dbl < 0) {
Utf8Value label(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(env, "option %s is out of range", *label);
THROW_ERR_INVALID_ARG_VALUE(env, "option %s is out of range", label);
return false;
}
val = static_cast<uint64_t>(dbl);
Expand Down
10 changes: 5 additions & 5 deletions src/quic/endpoint.cc
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ bool SetOption(Environment* env,
if (!value->ToNumber(env->context()).ToLocal(&num)) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "The %s option must be a number", *nameStr);
env, "The %s option must be a number", nameStr);
return false;
}
options->*member = num->Value();
Expand All @@ -124,15 +124,15 @@ bool SetOption(Environment* env,
if (!value->IsUint32()) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "The %s option must be an uint8", *nameStr);
env, "The %s option must be an uint8", nameStr);
return false;
}
Local<Uint32> num;
if (!value->ToUint32(env->context()).ToLocal(&num) ||
num->Value() > std::numeric_limits<uint8_t>::max()) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "The %s option must be an uint8", *nameStr);
env, "The %s option must be an uint8", nameStr);
return false;
}
options->*member = num->Value();
Expand All @@ -151,7 +151,7 @@ bool SetOption(Environment* env,
if (!value->IsArrayBufferView()) {
Utf8Value nameStr(env->isolate(), name);
THROW_ERR_INVALID_ARG_VALUE(
env, "The %s option must be an ArrayBufferView", *nameStr);
env, "The %s option must be an ArrayBufferView", nameStr);
return false;
}
Store store;
Expand All @@ -163,7 +163,7 @@ bool SetOption(Environment* env,
THROW_ERR_INVALID_ARG_VALUE(
env,
"The %s option must be an ArrayBufferView of length %d",
*nameStr,
nameStr,
TokenSecret::QUIC_TOKENSECRET_LEN);
return false;
}
Expand Down
4 changes: 2 additions & 2 deletions src/quic/tlscontext.cc
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ bool SetOption(Environment* env,
} else {
Utf8Value namestr(env->isolate(), name);
THROW_ERR_INVALID_ARG_TYPE(
env, "%s value must be a key object", *namestr);
env, "%s value must be a key object", namestr);
return false;
}
} else if constexpr (std::is_same<T, Store>::value) {
Expand Down Expand Up @@ -163,7 +163,7 @@ bool SetOption(Environment* env,
} else {
Utf8Value namestr(env->isolate(), name);
THROW_ERR_INVALID_ARG_TYPE(
env, "%s value must be a key object", *namestr);
env, "%s value must be a key object", namestr);
return false;
}
} else if constexpr (std::is_same<T, Store>::value) {
Expand Down
Loading