blob: 8b676f83c442a9da1c4e2016b6506257c1137c64 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
{-# LANGUAGE ForeignFunctionInterface #-}
module Bug where
import Data.Word
import Foreign
import Foreign.C.String
import Foreign.C.Types
type CSaFamily = (Word16)
data SockAddr = SockAddrUnix String
pokeSockAddr :: Ptr a -> SockAddr -> IO ()
pokeSockAddr p (SockAddrUnix path) = do
case path of
('\0':_) -> zeroMemory p (110)
_ -> return ()
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p ((1) :: CSaFamily)
let pathC = map castCharToCChar path
poker = case path of ('\0':_) -> pokeArray; _ -> pokeArray0 0
poker (((\hsc_ptr -> hsc_ptr `plusPtr` 2)) p) pathC
foreign import ccall unsafe "string.h" memset :: Ptr a -> CInt -> CSize -> IO ()
zeroMemory :: Ptr a -> CSize -> IO ()
zeroMemory dest nbytes = memset dest 0 (fromIntegral nbytes)
|