Hello,

It seems this bug has already been submitted:
http://hackage.haskell.org/trac/ghc/ticket/2120

Thanks for the help.
__
Donnie Jones

On 3/14/08, Cale Gibbard <cgibbard@gmail.com> wrote:
Here's the bug:

{-# INLINE safeIndex #-}
safeIndex :: Ix i => (i, i) -> Int -> i -> Int
safeIndex (l,u) n i = let i' = unsafeIndex (l,u) i
                      in if (0 <= i') && (i' < n)
                         then i'
                         else error "Error in array index"

unsafeIndex here is just a function which transforms indices into Int
indices into the flat array and does no checking of validity. Then
safeIndex simply checks if the result is nonnegative and less than the
size of the array. Whoops! The actual test to see if the index was
valid in the first place didn't actually get performed!


  - Cale


On 14/03/2008, Eric Mertens <emertens@gmail.com> wrote:
> Smaller example of this behavior:
>
>  > array ((0,0),(1,1)) [((1,1),6)] ! (0,3)
>  6
>
>  --
>
> Eric Mertens
>
> _______________________________________________
>  Haskell-Cafe mailing list
>  Haskell-Cafe@haskell.org
>  http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe