diff options
author | 2023-01-13 11:55:46 -0800 | |
---|---|---|
committer | 2023-01-13 11:55:46 -0800 | |
commit | 828fd0cfea72c8fe49a22f4102e7fe3b1f807b47 (patch) | |
tree | c8333229ecb484c7a4bd28295fd484e86e4faab4 | |
parent | 168bb1427f2dce8ce871da30fbc22e3a0c83f9a2 (diff) | |
download | bun-828fd0cfea72c8fe49a22f4102e7fe3b1f807b47.tar.gz bun-828fd0cfea72c8fe49a22f4102e7fe3b1f807b47.tar.zst bun-828fd0cfea72c8fe49a22f4102e7fe3b1f807b47.zip |
Fix debug mode crash
-rw-r--r-- | src/http_client_async.zig | 7 | ||||
-rw-r--r-- | src/tagged_pointer.zig | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/http_client_async.zig b/src/http_client_async.zig index b973c92b2..a25b1e8f1 100644 --- a/src/http_client_async.zig +++ b/src/http_client_async.zig @@ -255,8 +255,11 @@ fn NewHTTPContext(comptime ssl: bool) type { ptr: *anyopaque, socket: HTTPSocket, ) void { - var tagged = ActiveSocket.from(bun.cast(**anyopaque, ptr).*); - socket.ext(**anyopaque).?.* = bun.cast(**anyopaque, ActiveSocket.init(dead_socket).ptr()); + var tagged = ActiveSocket.from(@ptrCast(**anyopaque, @alignCast(@alignOf(**anyopaque), ptr)).*); + { + @setRuntimeSafety(false); + socket.ext(**anyopaque).?.* = @ptrCast(**anyopaque, @alignCast(@alignOf(**anyopaque), ActiveSocket.init(dead_socket).ptrUnsafe())); + } if (tagged.get(HTTPClient)) |client| { return client.onEnd( diff --git a/src/tagged_pointer.zig b/src/tagged_pointer.zig index b30be8a56..99d8a0b4d 100644 --- a/src/tagged_pointer.zig +++ b/src/tagged_pointer.zig @@ -152,6 +152,11 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { return this.repr.to(); } + pub inline fn ptrUnsafe(this: This) *anyopaque { + @setRuntimeSafety(false); + return this.repr.to(); + } + pub inline fn init(_ptr: anytype) This { const Type = std.meta.Child(@TypeOf(_ptr)); const name = comptime typeBaseName(@typeName(Type)); |