https://bugs.kde.org/show_bug.cgi?id=454121
Dmitry Kazakov <dimul...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Latest Commit| |https://invent.kde.org/grap | |hics/krita/commit/28f095779 | |61ee21438c9d9f52744a59ecd1f | |f38d Resolution|--- |FIXED --- Comment #4 from Dmitry Kazakov <dimul...@gmail.com> --- Git commit 28f09577961ee21438c9d9f52744a59ecd1ff38d by Dmitry Kazakov. Committed on 09/08/2022 at 09:20. Pushed by dkazakov into branch 'master'. Fix a severe bug when undo actions could become incomplete Most of our undo actions are executed in strokes. It turned out that these strokes can easily be cancelled (like normal strokes are), leaving the image in inconsistent state. To achieve that the user should have been pressed Ctrl+Z too quickly (or switch undo state in the docker too quickly). The problem could manifest itself in several ways: 1) "Quick Group" action could be partially undone, leaving the group layer in the stack. 2) Which could cause several more severe outcomes, because on the next undo/redo the layer would be added into the stack once again, causing the following: * KisNode::add() would assert that the node is already in the stack * KisDummiesFacadeBase::slotContinueAddRemoveNode() would assert/crash on inconsistency between dummies and nodes (bug 454121) 3) Tile manager could catch this broken undo history by an assert in KisMementoManager::rollback() ``` KIS_SAFE_ASSERT_RECOVER_NOOP(changeList.memento == memento); ``` M +5 -0 libs/image/kis_stroke.cpp M +1 -0 libs/image/kis_stroke.h M +12 -0 libs/image/kis_stroke_strategy.cpp M +15 -0 libs/image/kis_stroke_strategy.h M +1 -0 libs/image/kis_stroke_strategy_undo_command_based.cpp M +16 -2 libs/image/kis_strokes_queue.cpp https://invent.kde.org/graphics/krita/commit/28f09577961ee21438c9d9f52744a59ecd1ff38d -- You are receiving this mail because: You are watching all bug changes.