From f7aa5f33445d720ea804929b5babc9fee76c98b0 Mon Sep 17 00:00:00 2001 From: Phillip Alday Date: Fri, 19 Jul 2024 11:34:12 +0200 Subject: [PATCH] safer indexing for AbstractArray --- src/convert/axisarray.jl | 2 +- src/convert/base.jl | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/convert/axisarray.jl b/src/convert/axisarray.jl index cb147c5e..bc7e9f5e 100644 --- a/src/convert/axisarray.jl +++ b/src/convert/axisarray.jl @@ -4,7 +4,7 @@ function rcopy(::Type{AxisArray}, r::Ptr{S}) where {S<:VectorSxp} dnames = getattrib(r, Const.DimNamesSymbol) isnull(dnames) && error("r has no dimnames") dsym = rcopy(Array{Symbol}, getnames(dnames)) - for i in 1:length(dsym) + for i in eachindex(dsym) if dsym[i] == Symbol("") dsym[i] = i == 1 ? (:row) : i == 2 ? (:col) : i == 3 ? (:page) : Symbol(:dim_, i) end diff --git a/src/convert/base.jl b/src/convert/base.jl index 2463cd4f..ac07c907 100644 --- a/src/convert/base.jl +++ b/src/convert/base.jl @@ -114,7 +114,7 @@ end function rcopy(::Type{Vector{Bool}},s::Ptr{LglSxp}) a = Array{Bool}(undef, length(s)) v = unsafe_vec(s) - for i = 1:length(a) + for i in eachindex(a, v) a[i] = v[i] != 0 end a @@ -122,7 +122,7 @@ end function rcopy(::Type{BitVector},s::Ptr{LglSxp}) a = BitArray(undef, length(s)) v = unsafe_vec(s) - for i = 1:length(a) + for i in eachindex(a, v) a[i] = v[i] != 0 end a @@ -135,7 +135,7 @@ end function rcopy(::Type{Array{Bool}},s::Ptr{LglSxp}) a = Array{Bool}(undef, size(s)...) v = unsafe_vec(s) - for i = 1:length(a) + for i in eachindex(a, v) a[i] = v[i] != 0 end a @@ -143,7 +143,7 @@ end function rcopy(::Type{BitArray},s::Ptr{LglSxp}) a = BitArray(undef, size(s)...) v = unsafe_vec(s) - for i = 1:length(a) + for i in eachindex(a,v) a[i] = v[i] != 0 end a @@ -264,8 +264,8 @@ sexp(::Type{RClass{:character}},st::AbstractString) = sexp(RClass{:character}, s function sexp(::Type{RClass{:character}}, a::AbstractArray{T}) where T<:AbstractString ra = protect(allocArray(StrSxp, size(a)...)) try - for i in 1:length(a) - ra[i] = a[i] + for (i, idx) in enumerate(eachindex(a)) + ra[i] = a[idx] end finally unprotect(1) @@ -296,8 +296,8 @@ end function sexp(::Type{RClass{:list}}, a::AbstractArray) ra = protect(allocArray(VecSxp, size(a)...)) try - for i in 1:length(a) - ra[i] = a[i] + for (i, idx) in enumerate(eachindex(a)) + ra[i] = a[idx] end finally unprotect(1)