From 5b6ce3e6f6dd12642098d13764573893c12a86c3 Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Wed, 1 Jul 2026 09:25:58 +0100 Subject: [PATCH] Fix Stack overflow in OneTo(n)[[Block(1)]] --- Project.toml | 2 +- src/blockaxis.jl | 2 ++ test/test_blockindices.jl | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index fbe8ecd3..dddf335b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "BlockArrays" uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -version = "1.9.4" +version = "1.9.5" [deps] diff --git a/src/blockaxis.jl b/src/blockaxis.jl index 57d6f014..94c4d601 100644 --- a/src/blockaxis.jl +++ b/src/blockaxis.jl @@ -590,6 +590,8 @@ end b end +getindex(b::AbstractUnitRange{<:Integer}, K::AbstractVector{<:Block{1}}) = [b[k] for k in K] + blockaxes(b::AbstractUnitRange{T}) where {T<:Integer} = (Block.(Base.OneTo(one(T))),) function findblock(b::AbstractUnitRange{<:Integer}, k::Integer) diff --git a/test/test_blockindices.jl b/test/test_blockindices.jl index 30d366f2..9cfcc32e 100644 --- a/test/test_blockindices.jl +++ b/test/test_blockindices.jl @@ -137,6 +137,8 @@ import BlockArrays: split_index, merge_indices @test Int.(b) === 2:5 @test Base.OneTo.(1:5) isa Vector{Base.OneTo{Int}} #98 @test Base.OneTo(5)[Block.(1:1)] === Base.OneTo(5) + @test Base.OneTo(1)[[Block(1)]] == [Base.OneTo(1)] + @test Base.OneTo(1)[[Block(1),Block(1)]] == [Base.OneTo(1),Base.OneTo(1)] @test_throws BlockBoundsError Base.OneTo(5)[Block.(1:3)] @test intersect(Block.(2:5), Block.(3:6)) ≡ Block.(3:5)