@@ -51,7 +51,8 @@ constant
5151 -> Array Double
5252constant dims val =
5353 unsafePerformIO . mask_ $ do
54- ptr <- alloca $ \ ptrPtr ->
54+ ptr <- alloca $ \ ptrPtr -> do
55+ zeroOutArray ptrPtr
5556 withArray (fromIntegral <$> dims) $ \ dimArray -> do
5657 throwAFError =<< af_constant ptrPtr val n dimArray typ
5758 peek ptrPtr
@@ -76,7 +77,8 @@ constantComplex
7677 -- ^ Scalar value
7778 -> Array (Complex Double )
7879constantComplex dims val = unsafePerformIO . mask_ $ do
79- ptr <- alloca $ \ ptrPtr -> mask_ $ do
80+ ptr <- alloca $ \ ptrPtr -> do
81+ zeroOutArray ptrPtr
8082 withArray (fromIntegral <$> dims) $ \ dimArray -> do
8183 throwAFError =<< af_constant_complex ptrPtr (realPart val) (imagPart val) n dimArray typ
8284 peek ptrPtr
@@ -101,7 +103,8 @@ constantLong
101103 -- ^ Scalar value
102104 -> Array Int
103105constantLong dims val = unsafePerformIO . mask_ $ do
104- ptr <- alloca $ \ ptrPtr ->
106+ ptr <- alloca $ \ ptrPtr -> do
107+ zeroOutArray ptrPtr
105108 withArray (fromIntegral <$> dims) $ \ dimArray -> do
106109 throwAFError =<< af_constant_long ptrPtr (fromIntegral val) n dimArray
107110 peek ptrPtr
@@ -123,7 +126,8 @@ constantULong
123126 -> Word64
124127 -> Array Word64
125128constantULong dims val = unsafePerformIO . mask_ $ do
126- ptr <- alloca $ \ ptrPtr -> mask_ $ do
129+ ptr <- alloca $ \ ptrPtr -> do
130+ zeroOutArray ptrPtr
127131 withArray (fromIntegral <$> dims) $ \ dimArray -> do
128132 throwAFError =<< af_constant_ulong ptrPtr (fromIntegral val) n dimArray
129133 peek ptrPtr
@@ -142,6 +146,7 @@ range
142146 -> IO (Array a )
143147range dims (fromIntegral -> k) = do
144148 ptr <- alloca $ \ ptrPtr -> mask_ $ do
149+ zeroOutArray ptrPtr
145150 withArray (fromIntegral <$> dims) $ \ dimArray -> do
146151 throwAFError =<< af_range ptrPtr n dimArray k typ
147152 peek ptrPtr
157162 :: forall a . AFType a
158163 => [Int ] -> [Int ] -> IO (Array a )
159164iota dims tdims = do
160- ptr <- alloca $ \ ptrPtr -> mask_ $
165+ ptr <- alloca $ \ ptrPtr -> mask_ $ do
166+ zeroOutArray ptrPtr
161167 withArray (fromIntegral <$> dims) $ \ dimArray ->
162168 withArray (fromIntegral <$> tdims) $ \ tdimArray -> do
163169 throwAFError =<< af_iota ptrPtr n dimArray tn tdimArray typ
@@ -184,6 +190,7 @@ identity
184190 -> Array a
185191identity dims = unsafePerformIO . mask_ $ do
186192 ptr <- alloca $ \ ptrPtr -> mask_ $ do
193+ zeroOutArray ptrPtr
187194 withArray (fromIntegral <$> dims) $ \ dimArray -> do
188195 throwAFError =<< af_identity ptrPtr n dimArray typ
189196 peek ptrPtr
@@ -229,6 +236,7 @@ joinMany (fromIntegral -> n) arrays = unsafePerformIO . mask_ $ do
229236 forM_ fptrs $ \ fptr ->
230237 withForeignPtr fptr (poke fPtrsPtr)
231238 alloca $ \ aPtr -> do
239+ zeroOutArray aPtr
232240 throwAFError =<< af_join_many aPtr n nArrays fPtrsPtr
233241 peek aPtr
234242 Array <$>
@@ -274,6 +282,7 @@ moddims
274282moddims dims (Array fptr) =
275283 unsafePerformIO . mask_ . withForeignPtr fptr $ \ ptr -> do
276284 newPtr <- alloca $ \ aPtr -> do
285+ zeroOutArray aPtr
277286 withArray (fromIntegral <$> dims) $ \ dimsPtr -> do
278287 throwAFError =<< af_moddims aPtr ptr n dimsPtr
279288 peek aPtr
0 commit comments