Fixed crash in canvas_item_add_polyline if color arr has incorrect size
This commit is contained in:
@ -545,6 +545,8 @@ void RenderingServerCanvas::canvas_item_add_polyline(RID p_item, const Vector<Po
|
|||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
|
Color color = Color(1, 1, 1, 1);
|
||||||
|
|
||||||
Vector<int> indices;
|
Vector<int> indices;
|
||||||
int pc = p_points.size();
|
int pc = p_points.size();
|
||||||
int pc2 = pc * 2;
|
int pc2 = pc * 2;
|
||||||
@ -565,6 +567,8 @@ void RenderingServerCanvas::canvas_item_add_polyline(RID p_item, const Vector<Po
|
|||||||
Color *colors_ptr = colors.ptrw();
|
Color *colors_ptr = colors.ptrw();
|
||||||
|
|
||||||
if (p_antialiased) {
|
if (p_antialiased) {
|
||||||
|
Color color2 = Color(1, 1, 1, 0);
|
||||||
|
|
||||||
PackedColorArray colors_top;
|
PackedColorArray colors_top;
|
||||||
PackedVector2Array points_top;
|
PackedVector2Array points_top;
|
||||||
|
|
||||||
@ -616,8 +620,10 @@ void RenderingServerCanvas::canvas_item_add_polyline(RID p_item, const Vector<Po
|
|||||||
points_bottom_ptr[j] = pos - tangent;
|
points_bottom_ptr[j] = pos - tangent;
|
||||||
points_bottom_ptr[j2] = pos - tangent - tangent;
|
points_bottom_ptr[j2] = pos - tangent - tangent;
|
||||||
|
|
||||||
Color color = p_colors[i];
|
if (i < p_colors.size()) {
|
||||||
Color color2 = Color(color.r, color.g, color.b, 0);
|
color = p_colors[i];
|
||||||
|
color2 = Color(color.r, color.g, color.b, 0);
|
||||||
|
}
|
||||||
|
|
||||||
colors_ptr[j] = color;
|
colors_ptr[j] = color;
|
||||||
colors_ptr[j2] = color;
|
colors_ptr[j2] = color;
|
||||||
@ -653,13 +659,15 @@ void RenderingServerCanvas::canvas_item_add_polyline(RID p_item, const Vector<Po
|
|||||||
j2 = j + 1;
|
j2 = j + 1;
|
||||||
|
|
||||||
Vector2 tangent = ((t + prev_t).normalized()) * p_width * 0.5;
|
Vector2 tangent = ((t + prev_t).normalized()) * p_width * 0.5;
|
||||||
|
Vector2 pos = p_points[i];
|
||||||
Vector2 pos = p_points[j];
|
|
||||||
Color color = p_colors[j2];
|
|
||||||
|
|
||||||
points_ptr[j] = pos + tangent;
|
points_ptr[j] = pos + tangent;
|
||||||
points_ptr[j2] = pos - tangent;
|
points_ptr[j2] = pos - tangent;
|
||||||
|
|
||||||
|
if (i < p_colors.size()) {
|
||||||
|
color = p_colors[i];
|
||||||
|
}
|
||||||
|
|
||||||
colors_ptr[j] = color;
|
colors_ptr[j] = color;
|
||||||
colors_ptr[j2] = color;
|
colors_ptr[j2] = color;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user