Skip to content

Commit 020a842

Browse files
Merge pull request #21 from JuliaReinforcementLearning/tj/fix_20
Add boundscheck to view
2 parents b3d49d2 + 6e14137 commit 020a842

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "CircularArrayBuffers"
22
uuid = "9de3a189-e0c0-4e15-ba3b-b14b9fb0aec1"
33
authors = ["Jun Tian <[email protected]> and contributors"]
4-
version = "0.1.12"
4+
version = "0.1.13"
55

66
[deps]
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"

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)