From 1f6eb330e9fd9f0004dec4783496d36520dbd2a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 6 Jan 2025 19:08:40 +0100 Subject: Network: check and free interface list in joinMulticast --- src/Erebos/Network.hs | 12 +++++++++--- 1 file 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 -- cgit v1.2.3