From a86c0b8928ce35ae702325c30cb0068412f5d53a Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 30 Aug 2023 09:52:24 +0200 Subject: [PATCH] Gui: fix crash with the move to the new-style of class SelectionFilterPy When setting the selection filter below and hovering over an object causes a segmentation fault: filter = Gui.Selection.Filter('SELECT Part::Feature') Gui.Selection.addSelectionGate(filter) --- src/Gui/Selection.cpp | 2 +- src/Gui/SelectionFilterPy.h | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Gui/Selection.cpp b/src/Gui/Selection.cpp index a38283cc03..e08538ef45 100644 --- a/src/Gui/Selection.cpp +++ b/src/Gui/Selection.cpp @@ -2303,7 +2303,7 @@ PyObject *SelectionSingleton::sAddSelectionGate(PyObject * /*self*/, PyObject *a if (PyArg_ParseTuple(args, "O!|i",SelectionFilterPy::type_object(),&filterPy,resolve)) { PY_TRY { Selection().addSelectionGate(new SelectionFilterGatePython( - static_cast(filterPy)), toEnum(resolve)); + SelectionFilterPy::cast(filterPy)), toEnum(resolve)); Py_Return; } PY_CATCH; diff --git a/src/Gui/SelectionFilterPy.h b/src/Gui/SelectionFilterPy.h index d5edbc02e7..7d3c63041e 100644 --- a/src/Gui/SelectionFilterPy.h +++ b/src/Gui/SelectionFilterPy.h @@ -45,6 +45,10 @@ public: public: static void init_type(); // announce properties and methods + static SelectionFilterPy* cast(PyObject* py) { + using SelectionFilterClass = Py::PythonClassObject; + return SelectionFilterClass(py).getCxxObject(); + } SelectionFilterPy(Py::PythonClassInstance* self, Py::Tuple& args, Py::Dict& kdws);