summaryrefslogtreecommitdiff
path: root/testsuite/tests/simplCore/should_compile/T16918a.hs
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)