aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-02 17:55:03 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-02 17:55:03 -0700
commit57ad68a4b096d4cbe2b7a7e0373d546444ff7602 (patch)
tree762d2e431021d5ecaadd74f37ba372df5b58af25
parente5eabc0658d2133603596ec17a6e7c956c5fe28c (diff)
downloadbun-57ad68a4b096d4cbe2b7a7e0373d546444ff7602.tar.gz
bun-57ad68a4b096d4cbe2b7a7e0373d546444ff7602.tar.zst
bun-57ad68a4b096d4cbe2b7a7e0373d546444ff7602.zip
Fix off by one & exceptions
-rw-r--r--src/javascript/jsc/webcore/response.zig9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig
index 3e42c174a..f72ac5989 100644
--- a/src/javascript/jsc/webcore/response.zig
+++ b/src/javascript/jsc/webcore/response.zig
@@ -5384,7 +5384,8 @@ pub fn ReadableStreamSource(
.empty => return JSValue.jsNumber(0),
.chunk_size => |size| return JSValue.jsNumber(size),
.err => |err| {
- return err.toJSC(globalThis);
+ globalThis.vm().throwError(globalThis, err.toJSC(globalThis));
+ return JSC.JSValue.jsUndefined();
},
}
}
@@ -5396,7 +5397,7 @@ pub fn ReadableStreamSource(
return JSValue.jsUndefined();
},
.temporary_and_done, .owned_and_done, .into_array_and_done => {
- JSC.C.JSObjectSetPropertyAtIndex(globalThis.ref(), callFrame.argument(1).asObjectRef(), 0, JSValue.jsBoolean(true).asObjectRef(), null);
+ JSC.C.JSObjectSetPropertyAtIndex(globalThis.ref(), callFrame.argument(2).asObjectRef(), 0, JSValue.jsBoolean(true).asObjectRef(), null);
return result.toJS(globalThis);
},
else => return result.toJS(globalThis),
@@ -5498,6 +5499,8 @@ pub const ByteBlobLoader = struct {
}
pub fn onPull(this: *ByteBlobLoader, buffer: []u8, array: JSC.JSValue) StreamResult {
+ array.ensureStillAlive();
+ defer array.ensureStillAlive();
if (this.done) {
return .{ .done = {} };
}
@@ -5516,7 +5519,7 @@ pub const ByteBlobLoader = struct {
this.remain -|= copied;
this.offset +|= copied;
- @memcpy(temporary.ptr, buffer.ptr, temporary.len);
+ @memcpy(buffer.ptr, temporary.ptr, temporary.len);
if (this.remain == 0) {
return .{ .into_array_and_done = .{ .value = array, .len = copied } };
}