diff options
author | Hein-Pieter van Braam <hp@tmm.cx> | 2017-08-21 19:36:40 +0200 |
---|---|---|
committer | Hein-Pieter van Braam <hp@tmm.cx> | 2017-08-21 19:36:40 +0200 |
commit | 67b9d6eef2df5253657c89725195c58fe01b39f0 (patch) | |
tree | ad9ba50a0c057cd2b42b2988303398cc9b26707c | |
parent | 1be30f35a68a9fb2c156ded45c8689cc44f26f29 (diff) |
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
-rw-r--r-- | scene/resources/color_ramp.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/scene/resources/color_ramp.cpp b/scene/resources/color_ramp.cpp index 1825225abd..68f707220f 100644 --- a/scene/resources/color_ramp.cpp +++ b/scene/resources/color_ramp.cpp @@ -149,7 +149,7 @@ void Gradient::set_offset(int pos, const float offset) { } float Gradient::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? } @@ -164,7 +164,7 @@ void Gradient::set_color(int pos, const Color &color) { } Color Gradient::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? } |