Clifford Wolf:

Fixed segfault on invalid polygon/polyhedron vetrex indices



git-svn-id: http://svn.clifford.at/openscad/trunk@246 b57f626f-c46c-0410-a088-ec61d464b74c
stl_dim
clifford 2010-01-09 12:23:49 +00:00
parent 3939d27266
commit 961f5e5991
1 changed files with 13 additions and 8 deletions

View File

@ -397,10 +397,11 @@ sphere_next_r2:
p->append_poly();
for (int j=0; j<triangles.vec[i]->vec.size(); j++) {
int pt = triangles.vec[i]->vec[j]->num;
double px = points.vec[pt]->vec[0]->num;
double py = points.vec[pt]->vec[1]->num;
double pz = points.vec[pt]->vec[2]->num;
p->insert_vertex(px, py, pz);
if (pt < points.vec.size()) {
double px, py, pz;
if (points.vec[pt]->getv3(px, py, pz))
p->insert_vertex(px, py, pz);
}
}
}
}
@ -463,11 +464,15 @@ sphere_next_r2:
{
dd.paths.append(DxfData::Path());
for (int i=0; i<points.vec.size(); i++) {
DxfData::Point *p = &dd.points[i];
dd.paths.last().points.append(p);
if (i < dd.points.size()) {
DxfData::Point *p = &dd.points[i];
dd.paths.last().points.append(p);
}
}
if (dd.paths.last().points.size() > 0) {
dd.paths.last().points.append(dd.paths.last().points.first());
dd.paths.last().is_closed = true;
}
dd.paths.last().points.append(dd.paths.last().points.first());
dd.paths.last().is_closed = true;
}
else
{