diff options
-rw-r--r-- | src/Erebos/Network.hs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/Erebos/Network.hs b/src/Erebos/Network.hs index e9a4182..d8e868a 100644 --- a/src/Erebos/Network.hs +++ b/src/Erebos/Network.hs @@ -984,9 +984,15 @@ joinMulticast sock = withFdSocket sock $ \fd -> alloca $ \pcount -> do ptr <- cJoinMulticast fd pcount - count <- fromIntegral <$> peek pcount - forM [ 0 .. count - 1 ] $ \i -> - peekElemOff ptr i + if ptr == nullPtr + then do + return [] + else do + count <- fromIntegral <$> peek pcount + res <- forM [ 0 .. count - 1 ] $ \i -> + peekElemOff ptr i + cFree ptr + return res getServerAddresses :: Server -> IO [ SockAddr ] getServerAddresses Server {..} = do |