From 06aa45d7d4ca50d0e4e9ba7adf9ff478e7ccdbd7 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 27 Mar 2022 19:18:33 +0200 Subject: [PATCH] Fem: fix segmentation fault in FemPostDataAlongLineFilter::GetAxisData() It's possible that pdata becomes a null pointer. Forum thread: https://forum.freecadweb.org/viewtopic.php?f=18&t=67507 --- src/Mod/Fem/App/FemPostFilter.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Mod/Fem/App/FemPostFilter.cpp b/src/Mod/Fem/App/FemPostFilter.cpp index ca6550dd30..f1ed242970 100644 --- a/src/Mod/Fem/App/FemPostFilter.cpp +++ b/src/Mod/Fem/App/FemPostFilter.cpp @@ -282,20 +282,24 @@ void FemPostDataAlongLineFilter::GetAxisData() { const Base::Vector3d diff = vec1 - vec2; double Len = diff.Length(); - for(int i=0; iGetNumberOfPoints(); ++i) { + for (vtkIdType i = 0; i < dset->GetNumberOfPoints(); ++i) { double value = 0; - if(pdata->GetNumberOfComponents() == 1) - value = pdata->GetComponent(i, component); - else { - for(int j=0; jGetNumberOfComponents(); ++j) - value += std::pow(pdata->GetComponent(i, j),2); + if (pdata) { + if (pdata->GetNumberOfComponents() == 1) { + value = pdata->GetComponent(i, component); + } + else { + for (int j = 0; j < pdata->GetNumberOfComponents(); ++j) + value += std::pow(pdata->GetComponent(i, j), 2); - value = std::sqrt(value); + value = std::sqrt(value); + } } + values.push_back(value); double tcoord = tcoords->GetComponent(i, component); - coords.push_back(tcoord*Len); + coords.push_back(tcoord * Len); } YAxisData.setValues(values); XAxisData.setValues(coords);