Skip to content

Commit a64ef4f

Browse files
N5N3pull[bot]
authored andcommitted
Fix fast path for strides(::ReinterpretArray) with dense parent. (#46114)
1 parent b3a8c37 commit a64ef4f

3 files changed

Lines changed: 7 additions & 1 deletion

File tree

base/reinterpretarray.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ stride(A::Union{DenseArray,StridedReshapedArray,StridedReinterpretArray}, k::Int
153153
k ndims(A) ? strides(A)[k] : length(A)
154154

155155
function strides(a::ReinterpretArray{T,<:Any,S,<:AbstractArray{S},IsReshaped}) where {T,S,IsReshaped}
156-
_checkcontiguous(Bool, a) && return size_to_strides(1, size(a))
156+
_checkcontiguous(Bool, a) && return size_to_strides(1, size(a)...)
157157
stp = strides(parent(a))
158158
els, elp = sizeof(T), sizeof(S)
159159
els == elp && return stp # 0dim parent is also handled here.

test/abstractarray.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1623,6 +1623,9 @@ Base.size(::FakeZeroDimArray) = ()
16231623
# Zero dimensional parent
16241624
a = reshape(FakeZeroDimArray(),1,1,1)
16251625
@test @inferred(strides(a)) == (1, 1, 1)
1626+
# Dense parent (but not StridedArray)
1627+
A = reinterpret(Int8, reinterpret(reshape, Int16, rand(Int8, 2, 3, 3)))
1628+
@test check_strides(reshape(A, 3, 2, 3))
16261629
end
16271630

16281631
@testset "stride for 0 dims array #44087" begin

test/reinterpretarray.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ end
197197
end
198198
@test check_strides(reinterpret(Float32, view(A, 8:-1:1, viewax2)))
199199
end
200+
# issue 46113
201+
A = reinterpret(Int8, reinterpret(reshape, Int16, rand(Int8, 2, 3, 3)))
202+
@test check_strides(A)
200203
end
201204

202205
@testset "strides for ReshapedReinterpretArray" begin

0 commit comments

Comments
 (0)