I'm trying to combine scotty + ffi but it returns 'Segmentation fault/access violation in generated code'.
The thing is, that when I run only the ffi setmodulestring function, everything works fine. When I call it from scotty I get the segfault. I have hardcoded the 'param' and 'value' parameters in setmodulestring function just to be sure that the input is correct.
scotty code:
main = scotty 3000 $ do
middleware logStdoutDev
post "/setstringtest" $ do
let param = "FilePath"
let value = "C:/dev/misc/haskell/services/FM"
result <- liftIO $ FM.setmodulestring param value
text "done"
ffi code:
setmodulestring :: String -> String -> IO CInt
setmodulestring param value = do
cParam <- newCString param
cValue <- newCString value
let cParamLength = fromIntegral $ length param ::CInt
cValueLength = fromIntegral $ length value ::CInt
setVarInArray = (-1)::CInt
result <- c_setmodulestring cParam cParamLength cValue cValueLength setVarInArray
return result
Any comments/ideas more than appreciated.