summaryrefslogtreecommitdiff
path: root/testsuite/tests/codeGen/should_run/Cgrun067A.hs
blob: 2a5768039d355e818f8a8cf2230d540725604d22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module Cgrun067A (miscompiledFn) where

import Foreign.C
import Foreign

miscompiledFn :: CString -> IO String
miscompiledFn cp = do
  l <- lengthArray0 0 cp
  if l <= 0 then return "" else loop "" (l-1)
  where
    loop s i = do
        xval <- peekElemOff cp i
        let val = castCCharToChar xval
        val `seq` if i <= 0 then return (val:s) else loop (val:s) (i-1)