Browse Source

pcbnew: Fix VRML export checking

In rare cases, the VRML triangulator may claim to work but return empty
vectors.  These cases need to be caught before we dereference the vector
elements.

Fixes: lp:1838448
* https://bugs.launchpad.net/kicad/+bug/1838448
pull/14/head
Seth Hillbrand 6 years ago
parent
commit
161dc9ce7e
  1. 6
      pcbnew/exporters/export_vrml.cpp

6
pcbnew/exporters/export_vrml.cpp

@ -1702,7 +1702,8 @@ static void create_vrml_plane( IFSG_TRANSFORM& PcbOutput, VRML_COLOR_INDEX color
std::vector< int > idxPlane;
std::vector< int > idxSide;
if( !(*layer).Get2DTriangles( vertices, idxPlane, top_z, aTopPlane ) )
if( !( *layer ).Get2DTriangles( vertices, idxPlane, top_z, aTopPlane ) || idxPlane.empty()
|| idxSide.empty() )
{
#ifdef DEBUG
do {
@ -1788,7 +1789,8 @@ static void create_vrml_shell( IFSG_TRANSFORM& PcbOutput, VRML_COLOR_INDEX color
bottom_z = tmp;
}
if( !(*layer).Get3DTriangles( vertices, idxPlane, idxSide, top_z, bottom_z ) )
if( !( *layer ).Get3DTriangles( vertices, idxPlane, idxSide, top_z, bottom_z )
|| idxPlane.empty() || idxSide.empty() )
{
#ifdef DEBUG
do {

Loading…
Cancel
Save