diff options
Diffstat (limited to 'src')
| -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 |