Skip to content

Commit dfc49c3

Browse files
authored
Fix StackOverflow in the 'defaultalphas' function (#24)
1 parent b4e3a00 commit dfc49c3

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/Colorfy.jl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ export Colorfier, colorfy
1212

1313
# type alias to reduce typing
1414
const Values{T} = AbstractVector{<:T}
15-
const ValuesWithMissing{T} = AbstractVector{Union{Missing,T}}
1615

1716
"""
1817
Colorfier(values; [alphas, colorscheme, colorrange])
@@ -103,14 +102,17 @@ colorrange(colorfier::Colorfier) = colorfier.colorrange
103102
104103
Default color alphas for `values`.
105104
"""
106-
defaultalphas(values::Values) = fill(1, length(values))
107-
108-
function defaultalphas(values::ValuesWithMissing)
105+
function defaultalphas(values::Values)
109106
minds = findall(ismissing, values)
110107
vinds = setdiff(1:length(values), minds)
111-
valphas = defaultalphas(nonmissingvec(values[vinds]))
112-
malpha = zero(eltype(valphas))
113-
genvec(vinds, valphas, minds, malpha, length(values))
108+
109+
if isempty(minds)
110+
fill(1, length(values))
111+
else
112+
valphas = defaultalphas(nonmissingvec(values[vinds]))
113+
malpha = zero(eltype(valphas))
114+
genvec(vinds, valphas, minds, malpha, length(values))
115+
end
114116
end
115117

116118
defaultalphas(values::Values{Colorant}) = alpha.(values)

test/runtests.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ using Test
7979
colorfier = Colorfier(values)
8080
@test_throws ArgumentError Colorfy.colors(colorfier)
8181
values = Any[:red, :green, :blue] # vector with non-concrete eltype
82-
alphas = rand(3)
83-
colorfier = Colorfier(values; alphas)
82+
colorfier = Colorfier(values)
8483
@test_throws ArgumentError Colorfy.colors(colorfier)
8584
end
8685

0 commit comments

Comments
 (0)