Skip to content

Commit 47377ea

Browse files
committed
fix #20
1 parent b3d49d2 commit 47377ea

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/CircularArrayBuffers.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ Base.getindex(cb::CircularVectorBuffer, i, j) = getindex(cb.buffer, _buffer_fram
6969
Base.setindex!(cb::CircularArrayBuffer{T,N}, v, i::Int) where {T,N} = setindex!(cb.buffer, v, _buffer_index(cb, i))
7070
Base.setindex!(cb::CircularArrayBuffer{T,N}, v, I...) where {T,N} = setindex!(cb.buffer, v, Base.front(I)..., _buffer_frame(cb, Base.last(I)))
7171

72-
Base.view(cb::CircularArrayBuffer, i::Int) = view(cb.buffer, _buffer_index(cb, i))
73-
Base.view(cb::CircularArrayBuffer, I...) = view(cb.buffer, Base.front(I)..., _buffer_frame(cb, Base.last(I)))
72+
Base.view(cb::CircularArrayBuffer, i::Int) = (@boundscheck checkbounds(cb, i); view(cb.buffer, _buffer_index(cb, i)))
73+
Base.view(cb::CircularArrayBuffer, I...) = (@boundscheck checkbounds(cb, I...); view(cb.buffer, Base.front(I)..., _buffer_frame(cb, Base.last(I))))
7474

7575
capacity(cb::CircularArrayBuffer{T,N}) where {T,N} = size(cb.buffer, N)
7676
isfull(cb::CircularArrayBuffer) = cb.nframes == capacity(cb)

test/runtests.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ CUDA.allowscalar(false)
1616
@test b[1] == 0
1717
end
1818

19+
# https://github.com/JuliaReinforcementLearning/CircularArrayBuffers.jl/issues/20
20+
@testset "bound check with view" begin
21+
b = CircularArrayBuffer([1 2 3; 4 5 6])
22+
@test_throws BoundsError @view b[:, 4]
23+
@test_throws BoundsError @view b[:, 9]
24+
end
25+
1926
@testset "1D vector" begin
2027
b = CircularArrayBuffer([[1], [2, 3]])
2128
push!(b, [4, 5, 6])

0 commit comments

Comments
 (0)