Fix endianness handling in js_dataview_getValue / js_dataview_setValue

This commit is contained in:
Charlie Gordon 2024-03-23 13:19:04 +01:00
parent 653b2276cb
commit 3b45d155c7

View File

@ -55157,7 +55157,8 @@ static JSValue js_dataview_getValue(JSContext *ctx,
{
JSTypedArray *ta;
JSArrayBuffer *abuf;
int is_swap, size;
BOOL littleEndian, is_swap;
int size;
uint8_t *ptr;
uint32_t v;
uint64_t pos;
@ -55168,9 +55169,8 @@ static JSValue js_dataview_getValue(JSContext *ctx,
size = 1 << typed_array_size_log2(class_id);
if (JS_ToIndex(ctx, &pos, argv[0]))
return JS_EXCEPTION;
is_swap = TRUE;
if (argc > 1)
is_swap = !JS_ToBool(ctx, argv[1]);
littleEndian = argc > 1 && JS_ToBool(ctx, argv[1]);
is_swap = littleEndian ^ !is_be();
abuf = ta->buffer->u.array_buffer;
if (abuf->detached)
return JS_ThrowTypeErrorDetachedArrayBuffer(ctx);
@ -55255,7 +55255,8 @@ static JSValue js_dataview_setValue(JSContext *ctx,
{
JSTypedArray *ta;
JSArrayBuffer *abuf;
int is_swap, size;
BOOL littleEndian, is_swap;
int size;
uint8_t *ptr;
uint64_t v64;
uint32_t v;
@ -55294,9 +55295,8 @@ static JSValue js_dataview_setValue(JSContext *ctx,
v64 = u.u64;
}
}
is_swap = TRUE;
if (argc > 2)
is_swap = !JS_ToBool(ctx, argv[2]);
littleEndian = argc > 2 && JS_ToBool(ctx, argv[2]);
is_swap = littleEndian ^ !is_be();
abuf = ta->buffer->u.array_buffer;
if (abuf->detached)
return JS_ThrowTypeErrorDetachedArrayBuffer(ctx);