Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.11.3, 5.12.0
-
None
-
-
79e0effead13f60676bb5170fe92615d981827e7
Description
When i call QTextDocument::clearUndoRedoStacks(QTextDocument::UndoStack) an index out of bounds exception is triggered by QVector. This i originates from the QTextDocumentPrivate class, in fact in qtextdocument_p.cpp line 1105, there is the following code snippet:
for (int i = 0; i < undoState; ++i) { QTextUndoCommand c = undoStack.at(undoState); if (c.command & QTextUndoCommand::Custom) delete c.custom; }
which seems an obvious mistake. This code is executed only when passing QTextDocument::UndoStack as argument, not with RedoStack or UndoAndRedoStacks.
Here is the code to replicate the exception
QTextDocument doc;
QTextCursor c(&doc);
c.insertText("lorem ipsum");
doc.clearUndoRedoStacks(QTextDocument::UndoStack);