Skip to content

Commit

Permalink
Fix segfault due to GetCellPoints with empty/deleted cell with VTK<8.2 (
Browse files Browse the repository at this point in the history
  • Loading branch information
schuhschuh authored Jan 21, 2021
1 parent 2d42b71 commit 5c5e675
Show file tree
Hide file tree
Showing 21 changed files with 103 additions and 75 deletions.
2 changes: 1 addition & 1 deletion Applications/src/calculate-surface-attributes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ BorderCellMask(vtkPolyData *surface, vtkDataArray *cell_labels, bool edge_nbrs =
for (vtkIdType cellId = 0; cellId < surface->GetNumberOfCells(); ++cellId) {
mask->SetComponent(cellId, 0, 0.);
label = cell_labels->GetComponent(cellId, 0);
surface->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(surface, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
surface->GetPointCells(ptIds->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
Expand Down
6 changes: 3 additions & 3 deletions Applications/src/clean-surface.cc
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ int RemoveSpike(vtkPolyData *mesh, vtkIdType ptId, const Vector3 &direction, dou
cellId = active.front();
active.pop();
if (IsSpikeCell(mesh, cellId, direction, tol)) {
mesh->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(mesh, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
mesh->GetPointCells(ptIds->GetId(i), cellIds.GetPointer());
for (vtkIdType i = 0; i < cellIds->GetNumberOfIds(); ++i) {
Expand Down Expand Up @@ -272,12 +272,12 @@ void DeleteRedundantCells(vtkPolyData *mesh)
vtkNew<vtkIdList> ptIds1, ptIds2, cellIds;
for (vtkIdType cellId = 0; cellId < mesh->GetNumberOfCells(); ++cellId) {
if (mesh->GetCellType(cellId) != VTK_EMPTY_CELL) {
mesh->GetCellPoints(cellId, ptIds1.GetPointer());
GetCellPoints(mesh, cellId, ptIds1.GetPointer());
for (vtkIdType i = 0; i < ptIds1->GetNumberOfIds(); ++i) {
mesh->GetPointCells(ptIds1->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
if (cellIds->GetId(j) > cellId && mesh->GetCellType(cellIds->GetId(j)) != VTK_EMPTY_CELL) {
mesh->GetCellPoints(cellIds->GetId(j), ptIds2.GetPointer());
GetCellPoints(mesh, cellIds->GetId(j), ptIds2.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
ptIds2->IntersectWith(ptIds1.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
Expand Down
4 changes: 2 additions & 2 deletions Applications/src/convert-pointset.cc
Original file line number Diff line number Diff line change
Expand Up @@ -293,12 +293,12 @@ int main(int argc, char *argv[])
vtkNew<vtkIdList> ptIds1, ptIds2, cellIds;
for (vtkIdType cellId = 0; cellId < output->GetNumberOfCells(); ++cellId) {
if (surface->GetCellType(cellId) != VTK_EMPTY_CELL) {
surface->GetCellPoints(cellId, ptIds1.GetPointer());
GetCellPoints(surface, cellId, ptIds1.GetPointer());
for (vtkIdType i = 0; i < ptIds1->GetNumberOfIds(); ++i) {
surface->GetPointCells(ptIds1->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
if (cellIds->GetId(j) > cellId && surface->GetCellType(cellIds->GetId(j)) != VTK_EMPTY_CELL) {
surface->GetCellPoints(cellIds->GetId(j), ptIds2.GetPointer());
GetCellPoints(surface, cellIds->GetId(j), ptIds2.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
ptIds2->IntersectWith(ptIds1.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
Expand Down
4 changes: 2 additions & 2 deletions Applications/src/copy-pointset-attributes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ ConvertPointToCellLabels(vtkPointSet *pset, vtkDataArray *labels,
OrderedMap<double, int>::iterator bin;
vtkNew<vtkIdList> ptIds;
for (vtkIdType cellId = 0; cellId < pset->GetNumberOfCells(); ++cellId) {
pset->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(pset, cellId, ptIds.GetPointer());
for (int j = 0; j < labels->GetNumberOfComponents(); ++j) {
hist.clear();
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
Expand All @@ -277,7 +277,7 @@ ConvertPointToCellLabels(vtkPointSet *pset, vtkDataArray *labels,
double label;
vtkNew<vtkIdList> ptIds;
for (vtkIdType cellId = 0; cellId < pset->GetNumberOfCells(); ++cellId) {
pset->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(pset, cellId, ptIds.GetPointer());
for (int j = 0; j < labels->GetNumberOfComponents(); ++j) {
if (ptIds->GetNumberOfIds() == 0) {
label = invalid;
Expand Down
2 changes: 1 addition & 1 deletion Applications/src/evaluate-distance.cc
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ int main(int argc, char *argv[])
locator->FindClosestPoint(a, b, cellId, subId, dist);
dist = sqrt(dist);
if (mask) {
target->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(target, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
if (mask->GetComponent(ptIds->GetId(i), 0) != 0.) {
if (dist > hausdorff_dist) hausdorff_dist = dist;
Expand Down
2 changes: 1 addition & 1 deletion Applications/src/evaluate-distortion.cc
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ double Angle(vtkPolyData *mesh, vtkIdType cellId, vtkIdType ptId)
{
vtkIdType i[3] = {0, 1, 2};
vtkNew<vtkIdList> ptIds;
mesh->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(mesh, cellId, ptIds.GetPointer());
for (vtkIdType j = 0; j < ptIds->GetNumberOfIds(); ++j) {
if (ptIds->GetId(j) == ptId) {
i[0] = i[j];
Expand Down
8 changes: 4 additions & 4 deletions Applications/src/evaluate-surface-mesh.cc
Original file line number Diff line number Diff line change
Expand Up @@ -159,12 +159,12 @@ int NumberOfRedundantCells(vtkPolyData *dataset, const char *mask_name = nullptr
vtkNew<vtkIdList> ptIds1, ptIds2, cellIds;
for (vtkIdType cellId = 0; cellId < surface->GetNumberOfCells(); ++cellId) {
if (surface->GetCellType(cellId) != VTK_EMPTY_CELL) {
surface->GetCellPoints(cellId, ptIds1.GetPointer());
GetCellPoints(surface, cellId, ptIds1.GetPointer());
for (vtkIdType i = 0; i < ptIds1->GetNumberOfIds(); ++i) {
surface->GetPointCells(ptIds1->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
if (cellIds->GetId(j) > cellId && surface->GetCellType(cellIds->GetId(j)) != VTK_EMPTY_CELL) {
surface->GetCellPoints(cellIds->GetId(j), ptIds2.GetPointer());
GetCellPoints(surface, cellIds->GetId(j), ptIds2.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
ptIds2->IntersectWith(ptIds1.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
Expand Down Expand Up @@ -375,7 +375,7 @@ int main(int argc, char *argv[])
origCellIds->SetNumberOfTuples(selection.size());
surface->GetCellData()->AddArray(origCellIds);
for (auto origCellId : selection) {
input->GetCellPoints(origCellId, ptIds.GetPointer());
GetCellPoints(input, origCellId, ptIds.GetPointer());
cellId = surface->InsertNextCell(input->GetCellType(origCellId), ptIds.GetPointer());
origCellIds->SetValue(cellId, origCellId);
}
Expand Down Expand Up @@ -459,7 +459,7 @@ int main(int argc, char *argv[])
(ncomp < 65535 ? VTK_UNSIGNED_SHORT : VTK_INT),
surface->GetNumberOfCells(), 1, COMPONENT_ID);
for (vtkIdType cellId = 0; cellId < output->GetNumberOfCells(); ++cellId) {
output->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(output, cellId, ptIds.GetPointer());
cellIds->SetComponent(cellId, 0, (ptIds->GetNumberOfIds() == 0 ? 0. : compIds->GetComponent(ptIds->GetId(0), 0)));
}
AddCellData(input, surface, cellIds);
Expand Down
44 changes: 22 additions & 22 deletions Applications/src/merge-surfaces.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,7 @@ vtkSmartPointer<vtkDataArray> IntersectionCellMask(vtkPolyData * const surface,
next->DeepCopy(mask);
for (vtkIdType cellId = 0; cellId < n; ++cellId) {
if (mask->GetComponent(cellId, 0) != 0.) {
surface->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(surface, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
surface->GetPointCells(ptIds->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
Expand Down Expand Up @@ -1100,7 +1100,7 @@ vtkSmartPointer<vtkDataArray> IntersectionPointMask(vtkPolyData * const surface,
if (mask->GetComponent(ptId, 0) != 0.) {
surface->GetPointCells(ptId, cellIds.GetPointer());
for (vtkIdType i = 0; i < cellIds->GetNumberOfIds(); ++i) {
surface->GetCellPoints(cellIds->GetId(i), ptIds.GetPointer());
GetCellPoints(surface, cellIds->GetId(i), ptIds.GetPointer());
for (vtkIdType j = 0; j < ptIds->GetNumberOfIds(); ++j) {
next->SetComponent(ptIds->GetId(j), 0, 1.);
}
Expand Down Expand Up @@ -1130,7 +1130,7 @@ void GetEdgeLengthRange(vtkPolyData * const surface, vtkDataArray * const mask,

for (vtkIdType cellId = 0; cellId < surface->GetNumberOfCells(); ++cellId) {
if (mask->GetComponent(cellId, 0) != 0. && source->GetComponent(cellId, 0) != 0.) {
surface->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(surface, cellId, ptIds.GetPointer());
for (vtkIdType i = 0, j; i < ptIds->GetNumberOfIds(); ++i) {
j = (i + 1) % ptIds->GetNumberOfIds();
surface->GetPoint(ptIds->GetId(i), a);
Expand Down Expand Up @@ -1342,7 +1342,7 @@ vtkSmartPointer<vtkPolyData> LargestClosedIntersection(vtkPolyData *s1, vtkPolyD
cut->GetPointCells(ptId, cellIds.GetPointer());
if (cellIds->GetNumberOfIds() == 1) {
cellId = cellIds->GetId(0);
cut->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(cut, cellId, ptIds.GetPointer());
cut->RemoveCellReference(cellId);
cut->DeleteCell(cellId);
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
Expand Down Expand Up @@ -1789,8 +1789,8 @@ void SmoothLineStrip(vtkSmartPointer<vtkPolyData> cut, int niter = 1)
if (cellIds->GetNumberOfIds() == 2 &&
cut->GetCellType(cellIds->GetId(0)) == VTK_LINE &&
cut->GetCellType(cellIds->GetId(1)) == VTK_LINE) {
cut->GetCellPoints(cellIds->GetId(0), ptIds1.GetPointer());
cut->GetCellPoints(cellIds->GetId(1), ptIds2.GetPointer());
GetCellPoints(cut, cellIds->GetId(0), ptIds1.GetPointer());
GetCellPoints(cut, cellIds->GetId(1), ptIds2.GetPointer());
i1 = (ptIds1->GetId(0) == ptId ? 1 : 0);
i2 = (ptIds2->GetId(0) == ptId ? 1 : 0);
cut->GetPoint(ptIds1->GetId(i1), p1);
Expand Down Expand Up @@ -1844,7 +1844,7 @@ double LineStripLength(vtkSmartPointer<vtkPolyData> cut)
cut->BuildLinks();

for (vtkIdType cellId = 0; cellId < cut->GetNumberOfCells(); ++cellId) {
cut->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(cut, cellId, ptIds.GetPointer());
if (cut->GetCellType(cellId) == VTK_LINE && ptIds->GetNumberOfIds() == 2) {
cut->GetPoint(ptIds->GetId(0), p1);
cut->GetPoint(ptIds->GetId(1), p2);
Expand Down Expand Up @@ -1878,8 +1878,8 @@ double LineStripCurvature(vtkSmartPointer<vtkPolyData> cut)
if (cellIds->GetNumberOfIds() == 2 &&
cut->GetCellType(cellIds->GetId(0)) == VTK_LINE &&
cut->GetCellType(cellIds->GetId(1)) == VTK_LINE) {
cut->GetCellPoints(cellIds->GetId(0), ptIds1.GetPointer());
cut->GetCellPoints(cellIds->GetId(1), ptIds2.GetPointer());
GetCellPoints(cut, cellIds->GetId(0), ptIds1.GetPointer());
GetCellPoints(cut, cellIds->GetId(1), ptIds2.GetPointer());
i1 = (ptIds1->GetId(0) == ptId ? 1 : 0);
i2 = (ptIds2->GetId(0) == ptId ? 1 : 0);
cut->GetPoint(ptIds1->GetId(i1), p1);
Expand Down Expand Up @@ -1916,8 +1916,8 @@ double MaxLineStripAngle(vtkSmartPointer<vtkPolyData> cut)
if (cellIds->GetNumberOfIds() == 2 &&
cut->GetCellType(cellIds->GetId(0)) == VTK_LINE &&
cut->GetCellType(cellIds->GetId(1)) == VTK_LINE) {
cut->GetCellPoints(cellIds->GetId(0), ptIds1.GetPointer());
cut->GetCellPoints(cellIds->GetId(1), ptIds2.GetPointer());
GetCellPoints(cut, cellIds->GetId(0), ptIds1.GetPointer());
GetCellPoints(cut, cellIds->GetId(1), ptIds2.GetPointer());
i1 = (ptIds1->GetId(0) == ptId ? 1 : 0);
i2 = (ptIds2->GetId(0) == ptId ? 1 : 0);
cut->GetPoint(ptIds1->GetId(i1), p1);
Expand Down Expand Up @@ -2189,15 +2189,15 @@ inline void InsertEdgeIntersection(TriangleIntersectionsMap &intersections,
surface->GetPoint(newPtId, x);
}

surface->GetCellPoints(cellId, cellPtIds.GetPointer());
GetCellPoints(surface, cellId, cellPtIds.GetPointer());
const vtkIdType ptId1 = cellPtIds->GetId(edge);
const vtkIdType ptId2 = cellPtIds->GetId((edge + 1) % cellPtIds->GetNumberOfIds());
surface->GetCellEdgeNeighbors(cellId, ptId1, ptId2, cellIds.GetPointer());

for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
nbrId = cellIds->GetId(j);
nbrEdge = -1;
surface->GetCellPoints(nbrId, nbrPtIds.GetPointer());
GetCellPoints(surface, nbrId, nbrPtIds.GetPointer());
for (vtkIdType k = 0; k < nbrPtIds->GetNumberOfIds(); ++k) {
if (nbrPtIds->GetId(k) == ptId1 && nbrPtIds->GetId((k + 1) % nbrPtIds->GetNumberOfIds()) == ptId2) {
nbrEdge = k;
Expand Down Expand Up @@ -2383,7 +2383,7 @@ AddClosedIntersectionDivider(vtkPolyData *surface, vtkPolyData *cut, double tol
if (entry.second.size() > 1) {
ptIds->Reset();
for (const auto &lineId : entry.second) {
cut->GetCellPoints(lineId, linePtIds.GetPointer());
GetCellPoints(cut, lineId, linePtIds.GetPointer());
for (int i = 0; i < linePtIds->GetNumberOfIds(); ++i) {
ptIds->InsertUniqueId(linePtIds->GetId(i));
}
Expand Down Expand Up @@ -2413,13 +2413,13 @@ AddClosedIntersectionDivider(vtkPolyData *surface, vtkPolyData *cut, double tol
}

// Determine which edges are being intersected
surface->GetCellPoints(cellId, cellPtIds.GetPointer());
GetCellPoints(surface, cellId, cellPtIds.GetPointer());
surface->GetPoint(cellPtIds->GetId(0), pt[0]);
surface->GetPoint(cellPtIds->GetId(1), pt[1]);
surface->GetPoint(cellPtIds->GetId(2), pt[2]);

lineId = entry.second.front();
cut->GetCellPoints(lineId, linePtIds.GetPointer());
GetCellPoints(cut, lineId, linePtIds.GetPointer());
cut->GetPoint(linePtIds->GetId(0), p);
cut->GetPoint(linePtIds->GetId(1), q);

Expand Down Expand Up @@ -2511,7 +2511,7 @@ AddClosedIntersectionDivider(vtkPolyData *surface, vtkPolyData *cut, double tol
bisect[0] = (edge[0].i >= 0 ? 1 : 0);
bisect[1] = (edge[1].i >= 0 ? 1 : 0);
bisect[2] = (edge[2].i >= 0 ? 1 : 0);
surface->GetCellPoints(cellId, cellPtIds.GetPointer());
GetCellPoints(surface, cellId, cellPtIds.GetPointer());
switch (bisect[0] + bisect[1] + bisect[2]) {
case 0: {
Throw(ERR_LogicError, __FUNCTION__, "Exptected at least one edge intersection");
Expand Down Expand Up @@ -2632,12 +2632,12 @@ AddClosedIntersectionDivider(vtkPolyData *surface, vtkPolyData *cut, double tol
vtkNew<vtkIdList> ptIds1, ptIds2;
for (vtkIdType cellId = 0; cellId < output->GetNumberOfCells(); ++cellId) {
if (output->GetCellType(cellId) != VTK_EMPTY_CELL) {
output->GetCellPoints(cellId, ptIds1.GetPointer());
GetCellPoints(output, cellId, ptIds1.GetPointer());
for (vtkIdType i = 0; i < ptIds1->GetNumberOfIds(); ++i) {
output->GetPointCells(ptIds1->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
if (cellIds->GetId(j) > cellId && output->GetCellType(cellIds->GetId(j)) != VTK_EMPTY_CELL) {
output->GetCellPoints(cellIds->GetId(j), ptIds2.GetPointer());
GetCellPoints(output, cellIds->GetId(j), ptIds2.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
ptIds2->IntersectWith(ptIds1.GetPointer());
if (ptIds1->GetNumberOfIds() == ptIds2->GetNumberOfIds()) {
Expand Down Expand Up @@ -2728,7 +2728,7 @@ void GrowSourceRegion(vtkPolyData *surface, bool ignore_border_edges)

for (cellId = 0; cellId < surface->GetNumberOfCells(); ++cellId) {
if (source->GetComponent(cellId, 0) == 0.) {
surface->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(surface, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
surface->GetCellEdgeNeighbors(cellId, ptIds->GetId(i), ptIds->GetId((i + 1) % ptIds->GetNumberOfIds()), cellIds.GetPointer());
if (ignore_border_edges || cellIds->GetNumberOfIds() == 1) {
Expand All @@ -2750,7 +2750,7 @@ void GrowSourceRegion(vtkPolyData *surface, bool ignore_border_edges)
active.pop();
if (source->GetComponent(cellId, 0) == 0.) {
bins.clear();
surface->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(surface, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
surface->GetCellEdgeNeighbors(cellId, ptIds->GetId(i), ptIds->GetId((i + 1) % ptIds->GetNumberOfIds()), cellIds.GetPointer());
if (ignore_border_edges || cellIds->GetNumberOfIds() == 1) {
Expand Down Expand Up @@ -3336,7 +3336,7 @@ int main(int argc, char *argv[])
bool modified = false;
for (vtkIdType cellId = 0; cellId < output->GetNumberOfCells(); ++cellId) {
bins.clear();
output->GetCellPoints(cellId, ptIds.GetPointer());
GetCellPoints(output, cellId, ptIds.GetPointer());
for (vtkIdType i = 0; i < ptIds->GetNumberOfIds(); ++i) {
output->GetPointCells(ptIds->GetId(i), cellIds.GetPointer());
for (vtkIdType j = 0; j < cellIds->GetNumberOfIds(); ++j) {
Expand Down
8 changes: 4 additions & 4 deletions Applications/src/project-onto-surface.cc
Original file line number Diff line number Diff line change
Expand Up @@ -882,7 +882,7 @@ vtkIdType GrowRegion(vtkPolyData *surface, vtkDataArray *regions, LabelType regi
++region_size;
regions->SetComponent(id, 0, regionId);
if (using_cells) {
surface->GetCellPoints(id, cellPointIds.GetPointer());
GetCellPoints(surface, id, cellPointIds.GetPointer());
for (vtkIdType i = 0; i < cellPointIds->GetNumberOfIds(); ++i) {
idList->SetId(0, cellPointIds->GetId(i));
if (i == cellPointIds->GetNumberOfIds() - 1) {
Expand Down Expand Up @@ -1007,7 +1007,7 @@ void FillHoles(vtkPolyData *surface, const char *scalars_name = "Labels", bool u
label = static_cast<LabelType>(round(labels->GetComponent(id, 0)));
if (label != -1) continue;
// Iterate over cell edges
surface->GetCellPoints(id, cellPointIds.GetPointer());
GetCellPoints(surface, id, cellPointIds.GetPointer());
bool is_boundary_cell = false;
for (vtkIdType i = 0; i < cellPointIds->GetNumberOfIds(); ++i) {
// Get cells sharing these edge points
Expand Down Expand Up @@ -1063,7 +1063,7 @@ void FillHoles(vtkPolyData *surface, const char *scalars_name = "Labels", bool u
hist.clear();
if (using_cells) {
// Iterate over cell edges
surface->GetCellPoints(id, cellPointIds.GetPointer());
GetCellPoints(surface, id, cellPointIds.GetPointer());
for (vtkIdType i = 0; i < cellPointIds->GetNumberOfIds(); ++i) {
// Get cells sharing these edge points
idList->SetId(0, cellPointIds->GetId(i));
Expand Down Expand Up @@ -1345,7 +1345,7 @@ vtkSmartPointer<vtkPolyData> ExtractLabelBoundaries(vtkPolyData *surface, const
// Get cell label and point IDs
label = static_cast<LabelType>(round(cell_labels->GetComponent(cellId, 0)));
cellPointIds->Reset();
mesh->GetCellPoints(cellId, cellPointIds.GetPointer());
GetCellPoints(mesh, cellId, cellPointIds.GetPointer());
// Iterate over cell edges
for (vtkIdType i = 0; i < cellPointIds->GetNumberOfIds(); ++i) {
is_boundary_edge = false;
Expand Down
Loading

0 comments on commit 5c5e675

Please sign in to comment.