DESCRIPTION Redoing the deletion of a combined shape causes a crash. STEPS TO REPRODUCE 1. Create a new document 2. Create a vector layer 2. Make two lines on the created vector layer 3. Select both lines with the "Edit Shapes Tool" 4. Connect any ends together via the "Join with Segment" function 5. Delete combined shape 6. Undo the deletion, undo the combine operation 8. Redo everything 9. Crash OBSERVED RESULT Krita crashes EXPECTED RESULT Krita shouldn't crash SOFTWARE/OS VERSIONS Operating System (available in the Info Center app, or by running `kinfo` in a terminal window): KDE Plasma Version: KDE Frameworks Version: Qt Version: ADDITIONAL INFORMATION commit 2b927d92183e4722ac1561b25bc83b65438dffd7 libkritaflake.dll!QScopedPointer<KoShapeContainer::Private,QScopedPointerDeleter<KoShapeContainer::Private> >::operator->() Line 118 C++ libkritaflake.dll!KoShapeContainer::shapeInterface() Line 172 C++ libkritaflake.dll!KoShape::setParent(KoShapeContainer * parent) Line 467 C++ libkritaflake.dll!KoShapeContainer::removeShape(KoShape * shape) Line 66 C++ libkritaflake.dll!KoShapeDeleteCommand::redo() Line 74 C++ libkritacommand.dll!KUndo2Command::redoMergedCommands() Line 424 C++ libkritacommand.dll!KUndo2QStack::redo() Line 989 C++ libkritaui.dll!UndoStack::redoImpl() Line 242 C++ libkritaui.dll!UndoStack::processPostponedJobs() Line 268 C++ libkritaui.dll!UndoStack::redo() Line 205 C++ libkritaui.dll!KisMainWindow::redo() Line 1547 C++ libkritaui.dll!KisMainWindow::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 436 C++
The issue is happening because Krita creates a new path shape each time during the "redo()" call. The subsequent operations don't know about it and continue to use the old one. I used "Delete" to reproduce the issue, but other operations could be used instead. "Move", for example.
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/2870
Git commit 9ab35881aebecc78971292849d86558a79a39999 by Dmitry Kazakov, on behalf of Elena Sagalaeva. Committed on 27/07/2026 at 11:50. Pushed by dkazakov into branch 'master'. Do not create a new path shape in KoMultiPathPointMergeCommand::redo() call The subsequent operations don't know about the new shape and continue to use the old one, which causes crashes. M +26 -20 libs/flake/commands/KoMultiPathPointMergeCommand.cpp M +63 -0 libs/flake/tests/TestPointMergeCommand.cpp M +3 -0 libs/flake/tests/TestPointMergeCommand.h https://invent.kde.org/graphics/krita/-/commit/9ab35881aebecc78971292849d86558a79a39999
Git commit 478ddf4e6e5cebe3dbe0473d88d239c28e89ad01 by Dmitry Kazakov, on behalf of Elena Sagalaeva. Committed on 27/07/2026 at 11:59. Pushed by dkazakov into branch 'krita/6.0'. Do not create a new path shape in KoMultiPathPointMergeCommand::redo() call The subsequent operations don't know about the new shape and continue to use the old one, which causes crashes. M +26 -20 libs/flake/commands/KoMultiPathPointMergeCommand.cpp M +63 -0 libs/flake/tests/TestPointMergeCommand.cpp M +3 -0 libs/flake/tests/TestPointMergeCommand.h https://invent.kde.org/graphics/krita/-/commit/478ddf4e6e5cebe3dbe0473d88d239c28e89ad01