Mercurial > octave
changeset 33181:2bee38885727 stable
Check that number of values in "facevertexcdata" is consistent in patch (bug #65431).
* libinterp/corefcn/graphics.cc (patch::properties::update_data): Do not
continue if the number of color values in the "facevertexcdata" property
matches neither the number of faces nor the number of vertices of a patch
object.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Fri, 08 Mar 2024 19:16:53 +0100 |
parents | b5ffc06b39b2 |
children | a959fc381fee c4500208f280 |
files | libinterp/corefcn/graphics.cc |
diffstat | 1 files changed, 18 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc Fri Mar 08 08:19:52 2024 +0100 +++ b/libinterp/corefcn/graphics.cc Fri Mar 08 19:16:53 2024 +0100 @@ -9631,6 +9631,15 @@ return; } + // Check if number of color values matches number of faces or vertices + octave_idx_type nfvc = fvc.rows (); + if (nfvc > 1 && nfvc != nfaces && nfvc != nvert) + { + m_bad_data_msg = "number of facevertexcdata values matches " + "neither number of faces nor number of vertices"; + return; + } + // Replace NaNs if (idx.any_element_is_inf_or_nan ()) { @@ -9697,21 +9706,20 @@ if (fvc.rows () == nfaces || fvc.rows () == 1) { + // "facevertexcdata" holds color data per face or same color for all dv(0) = 1; dv(1) = fvc.rows (); dv(2) = fvc.columns (); cd = fvc.reshape (dv); } - else - { - if (! fvc.isempty ()) - { - dv(0) = idx.rows (); - dv(1) = nfaces; - dv(2) = fvc.columns (); - cd.resize (dv); - pervertex = true; - } + else if (! fvc.isempty ()) + { + // "facevertexcdata" holds color data per vertex + dv(0) = idx.rows (); + dv(1) = nfaces; + dv(2) = fvc.columns (); + cd.resize (dv); + pervertex = true; } // Build x,y,zdata and eventually per vertex cdata