@@ -1238,8 +1238,11 @@ napi_status napi_create_error(napi_env env,
12381238 NAPI_PREAMBLE (env);
12391239 CHECK_ARG (result);
12401240
1241+ v8::Local<v8::Value> message_value = v8impl::V8LocalValueFromJsValue (msg);
1242+ RETURN_STATUS_IF_FALSE (message_value->IsString (), napi_string_expected);
1243+
12411244 *result = v8impl::JsValueFromV8LocalValue (v8::Exception::Error (
1242- v8impl::V8LocalValueFromJsValue (msg) .As <v8::String>()));
1245+ message_value .As <v8::String>()));
12431246
12441247 return GET_RETURN_STATUS ();
12451248}
@@ -1250,8 +1253,11 @@ napi_status napi_create_type_error(napi_env env,
12501253 NAPI_PREAMBLE (env);
12511254 CHECK_ARG (result);
12521255
1256+ v8::Local<v8::Value> message_value = v8impl::V8LocalValueFromJsValue (msg);
1257+ RETURN_STATUS_IF_FALSE (message_value->IsString (), napi_string_expected);
1258+
12531259 *result = v8impl::JsValueFromV8LocalValue (v8::Exception::TypeError (
1254- v8impl::V8LocalValueFromJsValue (msg) .As <v8::String>()));
1260+ message_value .As <v8::String>()));
12551261
12561262 return GET_RETURN_STATUS ();
12571263}
@@ -1262,8 +1268,11 @@ napi_status napi_create_range_error(napi_env env,
12621268 NAPI_PREAMBLE (env);
12631269 CHECK_ARG (result);
12641270
1271+ v8::Local<v8::Value> message_value = v8impl::V8LocalValueFromJsValue (msg);
1272+ RETURN_STATUS_IF_FALSE (message_value->IsString (), napi_string_expected);
1273+
12651274 *result = v8impl::JsValueFromV8LocalValue (v8::Exception::RangeError (
1266- v8impl::V8LocalValueFromJsValue (msg) .As <v8::String>()));
1275+ message_value .As <v8::String>()));
12671276
12681277 return GET_RETURN_STATUS ();
12691278}
@@ -1298,7 +1307,8 @@ napi_status napi_typeof(napi_env env,
12981307 } else if (v->IsExternal ()) {
12991308 *result = napi_external;
13001309 } else {
1301- *result = napi_object; // Is this correct?
1310+ // Should not get here unless V8 has added some new kind of value.
1311+ return napi_set_last_error (napi_invalid_arg);
13021312 }
13031313
13041314 return napi_ok;
0 commit comments