mirror of
https://github.com/bellard/quickjs.git
synced 2025-09-27 05:38:45 +03:00
Merge pull request #418 from nickva/fix-byteoffset-for-detached-array-buffers
Fix byteOffset for detached array buffers
This commit is contained in:
commit
9b935dba42
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
@ -214,6 +214,7 @@ jobs:
|
||||
submodules: true
|
||||
- name: Install MinGW and Wine
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y wine mingw-w64
|
||||
cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll .
|
||||
- name: Setup Wine
|
||||
|
11
quickjs.c
11
quickjs.c
@ -54017,7 +54017,8 @@ static JSValue js_typed_array_subarray(JSContext *ctx, JSValueConst this_val,
|
||||
int argc, JSValueConst *argv)
|
||||
{
|
||||
JSValueConst args[4];
|
||||
JSValue arr, byteOffset, ta_buffer;
|
||||
JSValue arr, ta_buffer;
|
||||
JSTypedArray *ta;
|
||||
JSObject *p;
|
||||
int len, start, final, count, shift, offset;
|
||||
|
||||
@ -54034,12 +54035,10 @@ static JSValue js_typed_array_subarray(JSContext *ctx, JSValueConst this_val,
|
||||
goto exception;
|
||||
}
|
||||
count = max_int(final - start, 0);
|
||||
byteOffset = js_typed_array_get_byteOffset(ctx, this_val, 0);
|
||||
if (JS_IsException(byteOffset))
|
||||
goto exception;
|
||||
shift = typed_array_size_log2(p->class_id);
|
||||
offset = JS_VALUE_GET_INT(byteOffset) + (start << shift);
|
||||
JS_FreeValue(ctx, byteOffset);
|
||||
ta = p->u.typed_array;
|
||||
/* Read byteOffset (ta->offset) even if detached */
|
||||
offset = ta->offset + (start << shift);
|
||||
ta_buffer = js_typed_array_get_buffer(ctx, this_val, 0);
|
||||
if (JS_IsException(ta_buffer))
|
||||
goto exception;
|
||||
|
@ -23,7 +23,6 @@ test262/test/staging/sm/TypedArray/prototype-constructor-identity.js:17: Test262
|
||||
test262/test/staging/sm/TypedArray/set-detached-bigint.js:27: Error: Assertion failed: expected exception SyntaxError, got RangeError: invalid array length
|
||||
test262/test/staging/sm/TypedArray/set-detached.js:112: RangeError: invalid array length
|
||||
test262/test/staging/sm/TypedArray/sort_modifications.js:12: Test262Error: Int8Array at index 0 for size 4 Expected SameValue(«0», «1») to be true
|
||||
test262/test/staging/sm/TypedArray/subarray.js:15: Test262Error: Expected SameValue(«0», «1») to be true
|
||||
test262/test/staging/sm/async-functions/async-contains-unicode-escape.js:45: Error: Assertion failed: expected exception SyntaxError, no exception thrown
|
||||
test262/test/staging/sm/async-functions/await-error.js:12: Test262Error: Expected SameValue(«false», «true») to be true
|
||||
test262/test/staging/sm/async-functions/await-in-arrow-parameters.js:33: Error: Assertion failed: expected exception SyntaxError, no exception thrown - AsyncFunction:(a = (b = await/r/g) => {}) => {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user