| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 9572a0b commit 1fe7a1c
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,15 +16,13 @@ using v8::ArrayBuffer; | |||
| 16 | 16 | using v8::ArrayBufferView; | |
| 17 | 17 | using v8::BackingStore; | |
| 18 | 18 | using v8::BigInt; | |
| 19 | - using v8::Context; | ||
| 20 | 19 | using v8::FunctionCallbackInfo; | |
| 21 | 20 | using v8::Integer; | |
| 22 | 21 | using v8::Isolate; | |
| 23 | 22 | using v8::Just; | |
| 24 | 23 | using v8::JustVoid; | |
| 25 | 24 | using v8::Local; | |
| 26 | 25 | using v8::Maybe; | |
| 27 | - using v8::MaybeLocal; | ||
| 28 | 26 | using v8::NewStringType; | |
| 29 | 27 | using v8::Nothing; | |
| 30 | 28 | using v8::Number; | |
@@ -312,7 +310,6 @@ void SetValue(const FunctionCallbackInfo<Value>& args) { | |||
| 312 | 310 | } | |
| 313 | 311 | ||
| 314 | 312 | T converted; | |
| 315 | - Local<Context> context = env->context(); | ||
| 316 | 313 | ||
| 317 | 314 | if constexpr (std::is_same_v<T, int8_t>) { | |
| 318 | 315 | int64_t validated; | |
@@ -400,15 +397,16 @@ void SetValue(const FunctionCallbackInfo<Value>& args) { | |||
| 400 | 397 | return; | |
| 401 | 398 | } | |
| 402 | 399 | } else if constexpr (std::is_same_v<T, float> || std::is_same_v<T, double>) { | |
| 403 | - MaybeLocal<Number> number = value->ToNumber(context); | ||
| 404 | - Local<Number> number_local; | ||
| 405 | - | ||
| 406 | - if (!number.ToLocal(&number_local)) { | ||
| 407 | - THROW_ERR_INVALID_ARG_VALUE(env, "Value must be a number"); | ||
| 400 | + if (!value->IsNumber()) { | ||
| 401 | + if constexpr (std::is_same_v<T, float>) { | ||
| 402 | + THROW_ERR_INVALID_ARG_VALUE(env, "Value must be a float"); | ||
| 403 | + } else { | ||
| 404 | + THROW_ERR_INVALID_ARG_VALUE(env, "Value must be a double"); | ||
| 405 | + } | ||
| 408 | 406 | return; | |
| 409 | 407 | } | |
| 410 | 408 | ||
| 411 | - converted = static_cast<T>(number_local->Value()); | ||
| 409 | + converted = static_cast<T>(value.As<Number>()->Value()); | ||
| 412 | 410 | } else { | |
| 413 | 411 | UNREACHABLE(); | |
| 414 | 412 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -273,6 +273,12 @@ test('ffi validates memory access arguments', () => { | |||
| 273 | 273 | assert.throws(() => ffi.setUint64(ptr, 0, -1n), /Value must be a uint64/); | |
| 274 | 274 | assert.throws(() => ffi.setUint64(ptr, 0, 2n ** 64n), /Value must be a uint64/); | |
| 275 | 275 | assert.throws(() => ffi.setUint64(ptr, 0, Number.MAX_SAFE_INTEGER + 1), /Value must be a uint64/); | |
| 276 | + assert.throws(() => ffi.setFloat32(ptr, 0, '1.5'), /Value must be a float/); | ||
| 277 | + assert.throws(() => ffi.setFloat32(ptr, 0, null), /Value must be a float/); | ||
| 278 | + assert.throws(() => ffi.setFloat64(ptr, 0, '1.5'), /Value must be a double/); | ||
| 279 | + assert.throws(() => ffi.setFloat64(ptr, 0, true), /Value must be a double/); | ||
| 280 | + assert.throws(() => ffi.setFloat64(ptr, 0, {}), /Value must be a double/); | ||
| 281 | + assert.throws(() => ffi.setFloat64(ptr, 0, { valueOf: common.mustNotCall() }), /Value must be a double/); | ||
| 276 | 282 | assert.throws(() => ffi.exportString(1, ptr, 4), { code: 'ERR_INVALID_ARG_TYPE' }); | |
| 277 | 283 | assert.throws(() => ffi.exportString('ok', ptr, -1), { code: 'ERR_OUT_OF_RANGE' }); | |
| 278 | 284 | assert.throws(() => ffi.exportString('ok', ptr, 4, 1), { code: 'ERR_INVALID_ARG_TYPE' }); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments