From 59717fc6076f314991a4c9b7fcc33c2ad730eedc Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 15 Feb 2025 01:12:31 +0100 Subject: [PATCH] Gui: Fix crash when trying to transform link object This is a regression caused by PR 17564. ViewProviderDragger has the member 'forwardedViewProvider' that is used to handle the editing by the parent object. This means that inside ViewProviderLink::startEditing 'transformDragger' can be null but this isn't checked so that accessing the member causes a segmentation fault or a failing assert in debug mode, respectively. Solution: Make sure that transformDragger is not null before accessing it. This fixes 19542. --- src/Gui/ViewProviderLink.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Gui/ViewProviderLink.cpp b/src/Gui/ViewProviderLink.cpp index 265d77ef56..28f8f71f6c 100644 --- a/src/Gui/ViewProviderLink.cpp +++ b/src/Gui/ViewProviderLink.cpp @@ -2793,11 +2793,13 @@ ViewProvider *ViewProviderLink::startEditing(int mode) { } if (auto result = inherited::startEditing(mode)) { - transformDragger->addStartCallback(dragStartCallback, this); - transformDragger->addFinishCallback(dragFinishCallback, this); - transformDragger->addMotionCallback(dragMotionCallback, this); + if (transformDragger.get()) { + transformDragger->addStartCallback(dragStartCallback, this); + transformDragger->addFinishCallback(dragFinishCallback, this); + transformDragger->addMotionCallback(dragMotionCallback, this); - setDraggerPlacement(dragCtx->initialPlacement); + setDraggerPlacement(dragCtx->initialPlacement); + } return result; }