From 2c23e31c317025f6064c194f8850a474f4b6bf53 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Mon, 16 Apr 2018 22:58:19 +0800 Subject: src: throw ERR_INVALID_ARG_TYPE in C++ argument checks - Moves THROW_AND_RETURN_IF_NOT_BUFFER and THROW_AND_RETURN_IF_NOT_STRING from node_crypto.cc to node_errors.h so it can be reused. - Move THROW_AND_RETURN_UNLESS_BUFFER in util.h to node_buffer.cc and call THROW_AND_RETURN_IF_NOT_BUFFER there. The only other reference to THROW_AND_RETURN_UNLESS_BUFFER in node_i18n.cc can be safely replaced by an assertion since the argument will be checked in JS land. - Migrate ERR_INVALID_ARG_TYPE errors in C++. We can move the checks to JS land if possible later without having to go semver-major. PR-URL: https://github.com/nodejs/node/pull/20121 Reviewed-By: Daniel Bevenius Reviewed-By: Anna Henningsen Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Jeremiah Senkpiel --- src/node_dtrace.cc | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'src/node_dtrace.cc') diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc index ed063fddfa..29e6276824 100644 --- a/src/node_dtrace.cc +++ b/src/node_dtrace.cc @@ -42,6 +42,7 @@ #define NODE_GC_DONE(arg0, arg1, arg2) #endif +#include "node_errors.h" #include "node_internals.h" #include @@ -60,7 +61,7 @@ using v8::Value; #define SLURP_STRING(obj, member, valp) \ if (!(obj)->IsObject()) { \ - return env->ThrowError( \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ "expected object for " #obj " to contain string member " #member); \ } \ node::Utf8Value _##member(env->isolate(), \ @@ -70,23 +71,23 @@ using v8::Value; #define SLURP_INT(obj, member, valp) \ if (!(obj)->IsObject()) { \ - return env->ThrowError( \ - "expected object for " #obj " to contain integer member " #member); \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ + "expected object for " #obj " to contain integer member " #member);\ } \ *valp = obj->Get(OneByteString(env->isolate(), #member)) \ ->Int32Value(); #define SLURP_OBJECT(obj, member, valp) \ if (!(obj)->IsObject()) { \ - return env->ThrowError( \ - "expected object for " #obj " to contain object member " #member); \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ + "expected object for " #obj " to contain object member " #member); \ } \ *valp = Local::Cast(obj->Get(OneByteString(env->isolate(), #member))); #define SLURP_CONNECTION(arg, conn) \ if (!(arg)->IsObject()) { \ - return env->ThrowError( \ - "expected argument " #arg " to be a connection object"); \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ + "expected argument " #arg " to be a connection object"); \ } \ node_dtrace_connection_t conn; \ Local _##conn = Local::Cast(arg); \ @@ -103,8 +104,8 @@ using v8::Value; #define SLURP_CONNECTION_HTTP_CLIENT(arg, conn) \ if (!(arg)->IsObject()) { \ - return env->ThrowError( \ - "expected argument " #arg " to be a connection object"); \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ + "expected argument " #arg " to be a connection object"); \ } \ node_dtrace_connection_t conn; \ Local _##conn = Local::Cast(arg); \ @@ -115,12 +116,12 @@ using v8::Value; #define SLURP_CONNECTION_HTTP_CLIENT_RESPONSE(arg0, arg1, conn) \ if (!(arg0)->IsObject()) { \ - return env->ThrowError( \ - "expected argument " #arg0 " to be a connection object"); \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ + "expected argument " #arg0 " to be a connection object"); \ } \ if (!(arg1)->IsObject()) { \ - return env->ThrowError( \ - "expected argument " #arg1 " to be a connection object"); \ + return node::THROW_ERR_INVALID_ARG_TYPE(env, \ + "expected argument " #arg1 " to be a connection object"); \ } \ node_dtrace_connection_t conn; \ Local _##conn = Local::Cast(arg0); \ @@ -166,8 +167,8 @@ void DTRACE_HTTP_SERVER_REQUEST(const FunctionCallbackInfo& args) { SLURP_OBJECT(arg0, headers, &headers); if (!(headers)->IsObject()) { - return env->ThrowError( - "expected object for request to contain string member headers"); + return node::THROW_ERR_INVALID_ARG_TYPE(env, + "expected object for request to contain string member headers"); } Local strfwdfor = headers->Get(env->x_forwarded_string()); -- cgit v1.2.3