diff options
-rw-r--r-- | src/node_buffer.cc | 23 | ||||
-rw-r--r-- | src/util.h | 4 | ||||
-rw-r--r-- | test/parallel/test-buffer-write-noassert.js | 2 |
3 files changed, 15 insertions, 14 deletions
diff --git a/src/node_buffer.cc b/src/node_buffer.cc index d8879094fa9..50760df8a38 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -70,6 +70,7 @@ namespace Buffer { using v8::ArrayBuffer; using v8::ArrayBufferCreationMode; +using v8::ArrayBufferView; using v8::Context; using v8::EscapableHandleScope; using v8::FunctionCallbackInfo; @@ -195,41 +196,41 @@ inline MUST_USE_RESULT bool ParseArrayIndex(Local<Value> arg, // Buffer methods bool HasInstance(Local<Value> val) { - return val->IsUint8Array(); + return val->IsArrayBufferView(); } bool HasInstance(Local<Object> obj) { - return obj->IsUint8Array(); + return obj->IsArrayBufferView(); } char* Data(Local<Value> val) { - CHECK(val->IsUint8Array()); - Local<Uint8Array> ui = val.As<Uint8Array>(); + CHECK(val->IsArrayBufferView()); + Local<ArrayBufferView> ui = val.As<ArrayBufferView>(); ArrayBuffer::Contents ab_c = ui->Buffer()->GetContents(); return static_cast<char*>(ab_c.Data()) + ui->ByteOffset(); } char* Data(Local<Object> obj) { - CHECK(obj->IsUint8Array()); - Local<Uint8Array> ui = obj.As<Uint8Array>(); + CHECK(obj->IsArrayBufferView()); + Local<ArrayBufferView> ui = obj.As<ArrayBufferView>(); ArrayBuffer::Contents ab_c = ui->Buffer()->GetContents(); return static_cast<char*>(ab_c.Data()) + ui->ByteOffset(); } size_t Length(Local<Value> val) { - CHECK(val->IsUint8Array()); - Local<Uint8Array> ui = val.As<Uint8Array>(); + CHECK(val->IsArrayBufferView()); + Local<ArrayBufferView> ui = val.As<ArrayBufferView>(); return ui->ByteLength(); } size_t Length(Local<Object> obj) { - CHECK(obj->IsUint8Array()); - Local<Uint8Array> ui = obj.As<Uint8Array>(); + CHECK(obj->IsArrayBufferView()); + Local<ArrayBufferView> ui = obj.As<ArrayBufferView>(); return ui->ByteLength(); } @@ -800,7 +801,7 @@ void WriteFloatGeneric(const FunctionCallbackInfo<Value>& args) { THROW_AND_RETURN_UNLESS_BUFFER(env, args[0]); } - Local<Uint8Array> ts_obj = args[0].As<Uint8Array>(); + Local<ArrayBufferView> ts_obj = args[0].As<ArrayBufferView>(); ArrayBuffer::Contents ts_obj_c = ts_obj->Buffer()->GetContents(); const size_t ts_obj_offset = ts_obj->ByteOffset(); const size_t ts_obj_length = ts_obj->ByteLength(); diff --git a/src/util.h b/src/util.h index f43ccef8b84..c924209a3c8 100644 --- a/src/util.h +++ b/src/util.h @@ -439,8 +439,8 @@ class BufferValue : public MaybeStackBuffer<char> { } while (0) #define SPREAD_BUFFER_ARG(val, name) \ - CHECK((val)->IsUint8Array()); \ - v8::Local<v8::Uint8Array> name = (val).As<v8::Uint8Array>(); \ + CHECK((val)->IsArrayBufferView()); \ + v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \ v8::ArrayBuffer::Contents name##_c = name->Buffer()->GetContents(); \ const size_t name##_offset = name->ByteOffset(); \ const size_t name##_length = name->ByteLength(); \ diff --git a/test/parallel/test-buffer-write-noassert.js b/test/parallel/test-buffer-write-noassert.js index 10e9fd8b766..9a5e4e6671f 100644 --- a/test/parallel/test-buffer-write-noassert.js +++ b/test/parallel/test-buffer-write-noassert.js @@ -18,7 +18,7 @@ function write(funx, args, result, res) { if (!/Int/.test(funx)) { assert.throws( - () => Buffer.alloc(9)[funx].apply(new Uint32Array(1), args), + () => Buffer.alloc(9)[funx].apply(new Map(), args), /^TypeError: argument should be a Buffer$/ ); } |