From db211d95094ae3ee93954dfb850b57fb4faafb13 Mon Sep 17 00:00:00 2001 From: Ciro Spaciari MacBook Date: Tue, 27 Jan 2026 10:20:46 -0800 Subject: [PATCH] fix --- src/s3/client.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/s3/client.zig b/src/s3/client.zig index 41eaaa588d..648fcc31a0 100644 --- a/src/s3/client.zig +++ b/src/s3/client.zig @@ -514,13 +514,18 @@ pub fn uploadStream( callback_context: *anyopaque, ) bun.JSError!jsc.JSValue { this.ref(); // ref the credentials + var owned_metadata = metadata; const proxy_url = (proxy orelse ""); if (readable_stream.isDisturbed(globalThis)) { + if (owned_metadata) |*m| m.deinit(bun.default_allocator); + this.deref(); return jsc.JSPromise.rejectedPromise(globalThis, bun.String.static("ReadableStream is already disturbed").toErrorInstance(globalThis)).toJS(); } switch (readable_stream.ptr) { .Invalid => { + if (owned_metadata) |*m| m.deinit(bun.default_allocator); + this.deref(); return jsc.JSPromise.rejectedPromise(globalThis, bun.String.static("ReadableStream is invalid").toErrorInstance(globalThis)).toJS(); }, inline .File, .Bytes => |stream| { @@ -533,6 +538,8 @@ pub fn uploadStream( js_err.unprotect(); } js_err.ensureStillAlive(); + if (owned_metadata) |*m| m.deinit(bun.default_allocator); + this.deref(); return jsc.JSPromise.rejectedPromise(globalThis, js_err).toJS(); } }, @@ -555,7 +562,7 @@ pub fn uploadStream( .acl = acl, .storage_class = storage_class, .request_payer = request_payer, - .metadata = metadata, + .metadata = owned_metadata, .vm = jsc.VirtualMachine.get(), });