From add9bf910bbb37c35738b01d38c7fe28b75fb8e3 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 3 Apr 2017 19:09:47 +0200 Subject: [PATCH] fix memory leak on IGES import --- src/Mod/Import/App/AppImportPy.cpp | 5 +++++ src/Mod/Import/Gui/AppImportGuiPy.cpp | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Mod/Import/App/AppImportPy.cpp b/src/Mod/Import/App/AppImportPy.cpp index 5f189007fe67..7c08838c8fbc 100644 --- a/src/Mod/Import/App/AppImportPy.cpp +++ b/src/Mod/Import/App/AppImportPy.cpp @@ -41,9 +41,11 @@ # include # include # include +# include # include # include # include +# include # include # include #endif @@ -164,6 +166,9 @@ class Module : public Py::ExtensionModule pi->Show(); aReader.Transfer(hDoc); pi->EndScope(); + // http://opencascade.blogspot.de/2009/03/unnoticeable-memory-leaks-part-2.html + Handle(IGESToBRep_Actor)::DownCast(aReader.WS()->TransferReader()->Actor()) + ->SetModel(new IGESData_IGESModel); } catch (OSD_Exception) { Handle_Standard_Failure e = Standard_Failure::Caught(); diff --git a/src/Mod/Import/Gui/AppImportGuiPy.cpp b/src/Mod/Import/Gui/AppImportGuiPy.cpp index 9af34c2b88ff..b4ba0e105917 100644 --- a/src/Mod/Import/Gui/AppImportGuiPy.cpp +++ b/src/Mod/Import/Gui/AppImportGuiPy.cpp @@ -52,9 +52,11 @@ # include # include # include +# include # include # include # include +# include # include # include # include @@ -391,6 +393,9 @@ class Module : public Py::ExtensionModule pi->Show(); aReader.Transfer(hDoc); pi->EndScope(); + // http://opencascade.blogspot.de/2009/03/unnoticeable-memory-leaks-part-2.html + Handle(IGESToBRep_Actor)::DownCast(aReader.WS()->TransferReader()->Actor()) + ->SetModel(new IGESData_IGESModel); } catch (OSD_Exception) { Handle_Standard_Failure e = Standard_Failure::Caught(); @@ -565,6 +570,9 @@ class Module : public Py::ExtensionModule pi->Show(); aReader.Transfer(hDoc); pi->EndScope(); + // http://opencascade.blogspot.de/2009/03/unnoticeable-memory-leaks-part-2.html + Handle(IGESToBRep_Actor)::DownCast(aReader.WS()->TransferReader()->Actor()) + ->SetModel(new IGESData_IGESModel); } else { throw Py::Exception(Base::BaseExceptionFreeCADError, "no supported file format");