Skip to content

Commit b16f01f

Browse files
authored
Add bounds check to internal PseudoBlockArray constructor (#163)
* Update test_blockarrays.jl * Update pseudo_blockarray.jl * Update test_blockarrays.jl
1 parent de2a314 commit b16f01f

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

src/pseudo_blockarray.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@ julia> A = PseudoBlockArray(sprand(6, 0.5), [3,2,1])
4343
struct PseudoBlockArray{T, N, R<:AbstractArray{T,N}, BS<:NTuple{N,AbstractUnitRange{Int}}} <: AbstractBlockArray{T, N}
4444
blocks::R
4545
axes::BS
46-
PseudoBlockArray{T,N,R,BS}(blocks::R, axes::BS) where {T,N,R,BS<:NTuple{N,AbstractUnitRange{Int}}} =
47-
new{T,N,R,BS}(blocks, axes)
46+
function PseudoBlockArray{T,N,R,BS}(blocks::R, axes::BS) where {T,N,R,BS<:NTuple{N,AbstractUnitRange{Int}}}
47+
checkbounds(blocks,axes...)
48+
return new{T,N,R,BS}(blocks, axes)
49+
end
4850
end
4951

5052
const PseudoBlockMatrix{T} = PseudoBlockArray{T, 2}

test/test_blockarrays.jl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,12 @@ end
8585
fill!(ret, 0)
8686
@test Array(ret) == zeros(6)
8787

88-
ret = PseudoBlockArray{Float64,1,Vector{Float64}}(undef, 1:3)
89-
fill!(ret, 0)
90-
@test Array(ret) == zeros(6)
91-
9288
ret = PseudoBlockArray{Float64}(undef, 1:3, 1:3)
9389
fill!(ret, 0)
9490
@test Matrix(ret) == zeros(6,6)
9591

9692
A = [1,2,3,4,5,6]
93+
@test_throws BoundsError PseudoBlockArray(A,10:20)
9794
@test A == PseudoBlockArray(A, 1:3) == PseudoBlockArray{Int}(A, 1:3) ==
9895
PseudoBlockArray(A, (blockedrange(1:3),)) == PseudoBlockArray{Int}(A, (blockedrange(1:3),)) ==
9996
PseudoBlockArray{Float64}(A, 1:3)

0 commit comments

Comments
 (0)