You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SinceStrict changes behavior, we need the following to pass tests:
diff --git a/Network/Socket/Types.hsc b/Network/Socket/Types.hsc
index 8cbe9fc..853ad0c 100644
--- a/Network/Socket/Types.hsc
+++ b/Network/Socket/Types.hsc
@@ -935,6 +935,7 @@ class SocketAddress sa where
sockaddrStorageLen :: Int
sockaddrStorageLen = 128
+{-# NOINLINE withSocketAddress #-}
withSocketAddress :: SocketAddress sa => sa -> (Ptr sa -> Int -> IO a) -> IO a
withSocketAddress addr f = do
let sz = sizeOfSocketAddress addr
@@ -1050,6 +1051,9 @@ sizeOfSockAddr SockAddrUnix{} = error "sizeOfSockAddr: not supported"
sizeOfSockAddr SockAddrInet{} = #const sizeof(struct sockaddr_in)
sizeOfSockAddr SockAddrInet6{} = #const sizeof(struct sockaddr_in6)
+-- The combination of "-XString" and inlining results in a bug where
+-- "sz" is always 0.
+{-# NOINLINE withSockAddr #-}
-- | Use a 'SockAddr' with a function requiring a pointer to a
-- 'SockAddr' and the length of that 'SockAddr'.
withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO a
Breaking changes may include:
StrictDataand removing bangs as many as possible (Using Strict and StrictData by default #454)Strictonly if we reach consensus (Using strict language extension #412)