From 871f508847f0c4dc4fabcb61e9b7af9df5009c77 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Mon, 28 Apr 2025 13:15:04 -0400 Subject: [PATCH 1/3] Avoid infinite recursion by throwing explicit error --- src/blocksparsearray/blocksparsearray.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/blocksparsearray/blocksparsearray.jl b/src/blocksparsearray/blocksparsearray.jl index c4d05c0e..d92580fe 100644 --- a/src/blocksparsearray/blocksparsearray.jl +++ b/src/blocksparsearray/blocksparsearray.jl @@ -157,6 +157,8 @@ function BlockSparseArray{T,N,A}( ::UndefInitializer, dims::Tuple{AbstractVector{<:Integer},Vararg{AbstractVector{<:Integer}}}, ) where {T,N,A<:AbstractArray{T,N}} + length(dims) == N || + throw(ArgumentError("Length of dims doesn't match number of dimensions.")) return BlockSparseArray{T,N,A}(undef, blockedrange.(dims)) end From 9c7b5e37b3b14395567cb773733ded66933f8d56 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Mon, 28 Apr 2025 13:20:14 -0400 Subject: [PATCH 2/3] Add test --- test/test_basics.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_basics.jl b/test/test_basics.jl index 61225286..0a59f146 100644 --- a/test/test_basics.jl +++ b/test/test_basics.jl @@ -97,6 +97,7 @@ arrayts = (Array, JLArray) @test iszero(blockstoredlength(a)) @test iszero(storedlength(a)) end + T != BlockSparseArray{elt} && @test_throws ArgumentError T(undef, bs[1:1]) end # BlockSparseVector From f64112b329a2aa0c6087b60363e62009ef220999 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Mon, 28 Apr 2025 13:28:36 -0400 Subject: [PATCH 3/3] Bump version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 420ecd62..1fdf66a2 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "BlockSparseArrays" uuid = "2c9a651f-6452-4ace-a6ac-809f4280fbb4" authors = ["ITensor developers and contributors"] -version = "0.4.5" +version = "0.4.6" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"