Revision a6007b4...
Go back to digest for 4th November 2012Bug Fixes in KDE Base
This should hopefully fix #309093. I think a similar behaviour in wrapLine could also be needed.
The the cause of the crash was:
1: if (......) {
2: ......;
3: ......;
4: } else if { ....
5: .....
If the text from infront of the first if to just infront of the second if got deleted a line unwrapping action took place
The kate buffer just kept the { of line 1 and removed the information about the } { in line 4 during unwrapping, without
triggering a tree update.
1: if { ....
2: .....
When doing highlighting again it found again that the new block had a single { in the new line 1, therefore it triggered a
column only update within the folding tree. The tree on the other hand thought that it still had two region changes in the
now new line 1 and tried to update all columns as being told by the buffer, but the information it got from the highlighting
system containd only one opening region -> access to an elemnt in the vector that was out of bounds -> assert/crash
Now unwrapping just joins the region changes of the involved lines and the tree checks if the lenghtes of the vectors
matche, so it should always do a complete update of the meta information if needed
File Changes
- part/buffer/katetextblock.cpp
- part/document/katebuffer.cpp
- part/document/katebuffer.h
- part/syntax/katecodefolding.cpp