Use copyArray instead of copyBytes
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Mon, 19 Apr 2010 00:50:38 +0000 (00:50 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Mon, 19 Apr 2010 00:50:38 +0000 (00:50 +0000)
Data/Vector/Storable.hs
Data/Vector/Storable/Mutable.hs

index 502ff63..978db64 100644 (file)
@@ -92,8 +92,7 @@ import qualified Data.Vector.Fusion.Stream as Stream
 import Foreign.Storable
 import Foreign.ForeignPtr
 import Foreign.Ptr
-import Foreign.Marshal.Array ( advancePtr )
-import Foreign.Marshal.Utils ( copyBytes )
+import Foreign.Marshal.Array ( advancePtr, copyArray )
 
 import Control.Monad.ST ( ST )
 import Control.Monad.Primitive
@@ -160,9 +159,7 @@ instance Storable a => G.Vector Vector a where
     = unsafePrimToPrim
     $ withForeignPtr fp $ \_ ->
       withForeignPtr fq $ \_ ->
-      do
-        copyBytes p q (fromIntegral (n * sizeOf (undefined :: a)))
-        return ()
+      copyArray p q n
 
   {-# INLINE elemseq #-}
   elemseq _ = seq
index be446b4..2211b9c 100644 (file)
@@ -34,8 +34,7 @@ import Data.Vector.Storable.Internal
 import Foreign.Storable
 import Foreign.ForeignPtr
 import Foreign.Ptr
-import Foreign.Marshal.Array ( advancePtr )
-import Foreign.Marshal.Utils ( copyBytes )
+import Foreign.Marshal.Array ( advancePtr, copyArray )
 import Foreign.C.Types ( CInt )
 
 import Control.Monad.Primitive
@@ -91,9 +90,7 @@ instance Storable a => G.MVector MVector a where
     = unsafePrimToPrim
     $ withForeignPtr fp $ \_ ->
       withForeignPtr fq $ \_ ->
-      do
-        copyBytes p q (fromIntegral (n * sizeOf (undefined :: a)))
-        return ()
+      copyArray p q n
 
 -- | Create a mutable vector from a 'ForeignPtr' with an offset and a length.
 -- Modifying data through the 'ForeignPtr' afterwards is unsafe if the vector