Fix getData

This commit is contained in:
Luis Blanco 2020-03-23 15:17:24 +03:00
parent 1ca8dab472
commit 8b07e4aab3
1 changed files with 18 additions and 18 deletions

View File

@ -338,7 +338,7 @@ inline Type* getArrayData(
int *num = nullptr int *num = nullptr
) { ) {
Type *data = nullptr; Type *out = nullptr;
if (obj.IsTypedArray()) { if (obj.IsTypedArray()) {
Napi::TypedArray ta = obj.As<Napi::TypedArray>(); Napi::TypedArray ta = obj.As<Napi::TypedArray>();
@ -348,13 +348,13 @@ inline Type* getArrayData(
*num = arr.ByteLength() / sizeof(Type); *num = arr.ByteLength() / sizeof(Type);
} }
uint8_t *base = reinterpret_cast<uint8_t *>(arr.Data()); uint8_t *base = reinterpret_cast<uint8_t *>(arr.Data());
data = reinterpret_cast<Type *>(base + offset); out = reinterpret_cast<Type *>(base + offset);
} else if (obj.IsArrayBuffer()) { } else if (obj.IsArrayBuffer()) {
Napi::ArrayBuffer arr = obj.As<Napi::ArrayBuffer>(); Napi::ArrayBuffer arr = obj.As<Napi::ArrayBuffer>();
if (num) { if (num) {
*num = arr.ByteLength() / sizeof(Type); *num = arr.ByteLength() / sizeof(Type);
} }
data = reinterpret_cast<Type *>(arr.Data()); out = reinterpret_cast<Type *>(arr.Data());
} else { } else {
if (num) { if (num) {
*num = 0; *num = 0;
@ -362,7 +362,7 @@ inline Type* getArrayData(
JS_THROW("Argument must be of type `TypedArray`."); JS_THROW("Argument must be of type `TypedArray`.");
} }
return data; return out;
} }
@ -373,7 +373,7 @@ inline Type* getBufferData(
int *num = nullptr int *num = nullptr
) { ) {
Type *data = nullptr; Type *out = nullptr;
if (num) { if (num) {
*num = 0; *num = 0;
@ -381,38 +381,38 @@ inline Type* getBufferData(
if ( ! obj.IsBuffer() ) { if ( ! obj.IsBuffer() ) {
JS_THROW("Argument must be of type `Buffer`."); JS_THROW("Argument must be of type `Buffer`.");
return data; return out;
} }
Napi::Buffer<uint8_t> arr = obj.As< Napi::Buffer<uint8_t> >(); Napi::Buffer<uint8_t> arr = obj.As< Napi::Buffer<uint8_t> >();
if (num) { if (num) {
*num = arr.Length() / sizeof(Type); *num = arr.Length() / sizeof(Type);
} }
data = arr.Data(); out = arr.Data();
return data; return out;
} }
inline void *getData(Napi::Env env, Napi::Object obj) { inline void *getData(Napi::Env env, Napi::Object obj) {
void *data = nullptr; void *out = nullptr;
if (obj.IsBuffer()) { if (obj.IsTypedArray() || obj.IsArrayBuffer()) {
data = getBufferData<uint8_t>(env, obj); out = getArrayData<uint8_t>(env, obj);
} else if (obj.IsTypedArray() || obj.IsArrayBuffer()) { } else if (obj.IsBuffer()) {
data = getArrayData<uint8_t>(env, obj); out = getBufferData<uint8_t>(env, obj);
} else if (obj.Has("data")) { } else if (obj.Has("data")) {
Napi::Object data = obj.Get("data").As<Napi::Object>(); Napi::Object data = obj.Get("data").As<Napi::Object>();
if (data.IsBuffer()) { if (data.IsTypedArray() || data.IsArrayBuffer()) {
data = getBufferData<uint8_t>(env, data); out = getArrayData<uint8_t>(env, data);
} else if (data.IsTypedArray() || data.IsArrayBuffer()) { } else if (data.IsBuffer()) {
data = getArrayData<uint8_t>(env, data); out = getBufferData<uint8_t>(env, data);
} }
} }
return data; return out;
} }