diff options
author | Timothy Gu <timothygu99@gmail.com> | 2017-04-04 03:35:17 +0300 |
---|---|---|
committer | Timothy Gu <timothygu99@gmail.com> | 2017-04-12 20:02:59 +0300 |
commit | faa447b256f61d46b4b4963d6bf3e77ccf229e97 (patch) | |
tree | 11b72c2f99d7f071cc342b80bb59eeaef0c34316 /src/node_buffer.cc | |
parent | ec53921d2e96b4fd7672f69187f6b45b0ab96310 (diff) |
src: allow ArrayBufferView as instance of Buffer
PR-URL: https://github.com/nodejs/node/pull/12223
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'src/node_buffer.cc')
-rw-r--r-- | src/node_buffer.cc | 23 |
1 files changed, 12 insertions, 11 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(); |