Cgrun067A.hs 427 Bytes
Newer Older
1
2
-- Bug doesn't show up on -O0
{-# OPTIONS_GHC -O #-}
Ian Lynagh's avatar
Ian Lynagh committed
3
module Cgrun067A (miscompiledFn) where
4
5
6
7
8
9
10
11
12
13
14
15
16

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)