summaryrefslogtreecommitdiff
path: root/src/node_dtrace.cc
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2018-04-16 22:58:19 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2018-04-19 12:09:26 +0800
commit2c23e31c317025f6064c194f8850a474f4b6bf53 (patch)
tree8f25f315719122321a912cf1bae35a6f76a51edf /src/node_dtrace.cc
parent7e269f52667104c94dcf65e527b04c2632d701bb (diff)
downloadandroid-node-v8-2c23e31c317025f6064c194f8850a474f4b6bf53.tar.gz
android-node-v8-2c23e31c317025f6064c194f8850a474f4b6bf53.tar.bz2
android-node-v8-2c23e31c317025f6064c194f8850a474f4b6bf53.zip
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 <daniel.bevenius@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'src/node_dtrace.cc')
-rw-r--r--src/node_dtrace.cc31
1 files changed, 16 insertions, 15 deletions
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 <string.h>
@@ -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<Object>::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<Object> _##conn = Local<Object>::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<Object> _##conn = Local<Object>::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<Object> _##conn = Local<Object>::Cast(arg0); \
@@ -166,8 +167,8 @@ void DTRACE_HTTP_SERVER_REQUEST(const FunctionCallbackInfo<Value>& 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<Value> strfwdfor = headers->Get(env->x_forwarded_string());