summaryrefslogtreecommitdiff
path: root/src/Erebos
diff options
context:
space:
mode:
Diffstat (limited to 'src/Erebos')
-rw-r--r--src/Erebos/Network.hs12
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