diff options
-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)); |