From 7ef448572d378d969fbbf6b158bbf1d03abf3ea7 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 27 Jan 2022 10:37:16 +0100 Subject: [PATCH] Fem: fix possible crash when loading a VTK file --- src/Mod/Fem/App/FemVTKTools.cpp | 34 +++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index 52cb64dddc..9a209640c8 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -95,21 +95,23 @@ namespace Fem template vtkDataSet* readVTKFile(const char*fileName) { - vtkSmartPointer reader = - vtkSmartPointer::New(); - reader->SetFileName(fileName); - reader->Update(); - reader->GetOutput()->Register(reader); - return vtkDataSet::SafeDownCast(reader->GetOutput()); + vtkSmartPointer reader = + vtkSmartPointer::New(); + reader->SetFileName(fileName); + reader->Update(); + auto output = reader->GetOutput(); + if (output) + output->Register(reader); + return vtkDataSet::SafeDownCast(output); } template void writeVTKFile(const char* filename, vtkSmartPointer dataset) { - vtkSmartPointer writer = - vtkSmartPointer::New(); - writer->SetFileName(filename); - writer->SetInputData(dataset); - writer->Write(); + vtkSmartPointer writer = + vtkSmartPointer::New(); + writer->SetFileName(filename); + writer->SetInputData(dataset); + writer->Write(); } @@ -207,17 +209,25 @@ FemMesh* FemVTKTools::readVTKMesh(const char* filename, FemMesh* mesh) if(f.hasExtension("vtu")) { vtkSmartPointer dataset = readVTKFile(filename); + if (!dataset.Get()) { + Base::Console().Error("Failed to load file %s\n", filename); + return nullptr; + } importVTKMesh(dataset, mesh); } else if(f.hasExtension("vtk")) { vtkSmartPointer dataset = readVTKFile(filename); + if (!dataset.Get()) { + Base::Console().Error("Failed to load file %s\n", filename); + return nullptr; + } importVTKMesh(dataset, mesh); } else { Base::Console().Error("file name extension is not supported\n"); - return NULL; + return nullptr; } //Mesh should link to the part feature, in order to set up FemConstraint