Fix color_ramp indexing negative elements

The 'pos' variable passed to get_color() and get_offset() can be
negative if the color ramp itself is empty. This causes a lookup in an
empty position in the color Vector which leads to a crash.

We add a check so we never do a lookup in the color Vector if the
gradient is empty.

This fixes #10501

(cherry picked from commit 67b9d6eef2)
This commit is contained in:
Hein-Pieter van Braam 2017-08-21 19:36:40 +02:00 committed by Rémi Verschelde
parent e8fb68e038
commit bec8fd1732

View file

@ -141,7 +141,7 @@ void ColorRamp::set_offset(int pos, const float offset) {
}
float ColorRamp::get_offset(int pos) const {
if (points.size() > pos)
if (points.size() && points.size() > pos)
return points[pos].offset;
return 0; //TODO: Maybe throw some error instead?
}
@ -155,7 +155,7 @@ void ColorRamp::set_color(int pos, const Color &color) {
}
Color ColorRamp::get_color(int pos) const {
if (points.size() > pos)
if (points.size() && points.size() > pos)
return points[pos].color;
return Color(0, 0, 0, 1); //TODO: Maybe throw some error instead?
}