% -----------------------------------------------------------------------------
-% $Id: PrelMarshalArray.lhs,v 1.5 2001/08/15 09:19:04 simonmar Exp $
+% $Id: PrelMarshalArray.lhs,v 1.6 2001/08/15 09:24:47 simonmar Exp $
%
% (c) The FFI task force, 2000
%
-- needed linear stack space.
--
peekArray :: Storable a => Int -> Ptr a -> IO [a]
-peekArray size ptr = f (size-1) []
+peekArray size ptr | size < 0 = return []
+ | othwerwise = f (size-1) []
where
f 0 acc = do e <- peekElemOff ptr 0; return (e:acc)
- f n acc = do e <- peekElemOff ptr n; f n (e:acc)
+ f n acc = do e <- peekElemOff ptr n; f (n-1) (e:acc)
-- convert an array terminated by the given end marker into a Haskell list
--