aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/http_client_async.zig7
-rw-r--r--src/tagged_pointer.zig5
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));