Skip to content

Commit d627bb1

Browse files
committed
Fix tests with non-ideal loop in sub_materialize
1 parent a44bb7d commit d627bb1

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

src/abstractblocksparsearray/arraylayouts.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using ArrayLayouts: ArrayLayouts, DualLayout, MemoryLayout, MulAdd
22
using BlockArrays: Block, BlockLayout, blocks
3-
using SparseArraysBase: SparseLayout, eachstoredindex
3+
using SparseArraysBase: SparseLayout
44
using TypeParameterAccessors: parenttype, similartype
55

66
function ArrayLayouts.MemoryLayout(arraytype::Type{<:AnyAbstractBlockSparseArray})
@@ -62,12 +62,14 @@ function ArrayLayouts.sub_materialize(layout::BlockLayout{<:SparseLayout}, a, ax
6262
# TODO: Use `similar`?
6363
blocktype_a = blocktype(parent(a))
6464
a_dest = BlockSparseArray{eltype(a), length(axes), blocktype_a}(undef, axes)
65-
for I in eachstoredindex(blocks(a))
65+
for I in CartesianIndices(blocks(a_dest))
6666
b = Block(Tuple(I))
67-
block_a = @view a[b]
68-
block_dest = similar(a_dest[b])
69-
copyto!(block_dest, block_a)
70-
a_dest[b] = block_dest
67+
if isstored(a, b)
68+
block_a = @view a[b]
69+
block_dest = similar(a_dest[b])
70+
copyto!(block_dest, block_a)
71+
a_dest[b] = block_dest
72+
end
7173
end
7274
return a_dest
7375
end

0 commit comments

Comments
 (0)