@@ -634,7 +634,7 @@ modifyIndexUnsafe Array{..} i f = do
634634modifyIndexPtr :: forall m a b. (MonadIO m, Storable a) =>
635635 Int -> (a -> (a, b)) -> Ptr a -> Ptr a -> m b
636636modifyIndexPtr i f start end = liftIO $ do
637− let elemSize = sizeOf (undefined :: a)
637+ let elemSize = sizeOfElem (undefined :: a)
638638 elemPtr = start `plusPtr` (elemSize * i)
639639 if i >= 0 && elemPtr `plusPtr` elemSize <= end
640640 then do
@@ -682,7 +682,7 @@ modify Array{..} f = liftIO $
682682 where
683683
684684 go ptr = do
685− let elemSize = sizeOf (undefined :: a)
685+ let elemSize = sizeOfElem (undefined :: a)
686686 when (ptr `plusPtr` elemSize <= aEnd) $ do
687687 r <- peek ptr
688688 poke ptr (f r)
@@ -706,7 +706,7 @@ unsafeSwapIndices :: forall m a. (MonadIO m, Storable a)
706706 => Array a -> Int -> Int -> m ()
707707unsafeSwapIndices Array{..} i1 i2 = liftIO $ do
708708 unsafeWithArrayContents arrContents arrStart $ \ptr -> do
709− let elemSize = sizeOf (undefined :: a)
709+ let elemSize = sizeOfElem (undefined :: a)
710710 ptr1 = ptr `plusPtr` (elemSize * i1)
711711 ptr2 = ptr `plusPtr` (elemSize * i2)
712712 swapPtrs ptr1 (ptr2 :: Ptr a)
@@ -717,7 +717,7 @@ unsafeSwapIndices Array{..} i1 i2 = liftIO $ do
717717swapIndices :: forall m a. (MonadIO m, Storable a)
718718 => Array a -> Int -> Int -> m ()
719719swapIndices Array{..} i1 i2 = liftIO $ do
720− let elemSize = sizeOf (undefined :: a)
720+ let elemSize = sizeOfElem (undefined :: a)
721721 ptr1 = arrStart `plusPtr` (elemSize * i1)
722722 ptr2 = arrStart `plusPtr` (elemSize * i2)
723723 when (i1 < 0 || ptr1 >= aEnd ) $ invalidIndex "swapIndices" i1
@@ -1208,7 +1208,7 @@ reverse Array{..} = liftIO $ do
12081208
12091209 where
12101210
1211− elemSize = sizeOf (undefined :: a)
1211+ elemSize = sizeOfElem (undefined :: a)
12121212
12131213 swap l h = do
12141214 when (l < h) $ do