withForeignPtr buf1 $ \p1 ->
withForeignPtr buf2 $ \p2 -> do
res <- memcmp p1 p2 l
- case () of
- _ | res < 0 -> return LT
- | res == 0 -> if l1 == l2 then return EQ
- else if l1 < l2 then return LT
- else return GT
- | otherwise -> return GT
+ return $ case compare res 0 of
+ LT -> LT
+ EQ -> compare l1 l2
+ GT -> GT
#ifndef __HADDOCK__
foreign import ccall unsafe "ghc_memcmp"
{-# UNPACK #-} !Int
(MutableArray# RealWorld [FastString])
+{-# NOINLINE string_table #-}
string_table :: IORef FastStringTable
string_table =
unsafePerformIO $ do