From 3e2dc41d6842d3260ca9294ad4391ae464130e21 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Thu, 6 Jun 2024 17:17:41 +0000 Subject: [PATCH] fix prepend StackOverflow issue Attempt to fix #54711 Test introduced by #36227 --- base/array.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/base/array.jl b/base/array.jl index 0e0f22ae384c6..43cea879bdbd7 100644 --- a/base/array.jl +++ b/base/array.jl @@ -1316,8 +1316,7 @@ end append!(a::AbstractVector, iter) = _append!(a, IteratorSize(iter), iter) push!(a::AbstractVector, iter...) = append!(a, iter) - -append!(a::AbstractVector, iter...) = foldl(append!, iter, init=a) +append!(a::AbstractVector, iter...) = for v in iter; append!(a, v); end function _append!(a::AbstractVector, ::Union{HasLength,HasShape}, iter) n = Int(length(iter))::Int @@ -1376,10 +1375,9 @@ function prepend!(a::Vector{T}, items::Union{AbstractVector{<:T},Tuple}) where T return a end -prepend!(a::Vector, iter) = _prepend!(a, IteratorSize(iter), iter) -pushfirst!(a::Vector, iter...) = prepend!(a, iter) - -prepend!(a::AbstractVector, iter...) = foldr((v, a) -> prepend!(a, v), iter, init=a) +prepend!(a::AbstractVector, iter) = _prepend!(a, IteratorSize(iter), iter) +pushfirst!(a::AbstractVector, iter...) = prepend!(a, iter) +prepend!(a::AbstractVector, iter...) = for v in iter; prepend!(a, v); end function _prepend!(a::Vector, ::Union{HasLength,HasShape}, iter) @_terminates_locally_meta