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.

Reply via email to