Fix assertion when applying code folding that changes cursor position

Authored by mwolff on Apr 26 2017, 3:37 PM.

Description

Fix assertion when applying code folding that changes cursor position

Loading a file into Kate sometimes triggered the following assertion
for me:

fatal: unknown[unknown:0]: ASSERT: "thisLine.virtualLine() == virtualCursor.line()" in file /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewinternal.cpp, line 1420

Thread 1 "kate" received signal SIGABRT, Aborted.
0x00007ffff42d6a10 in raise () from /usr/lib/libc.so.6
(gdb) bt

#0  0x00007ffff42d6a10 in raise () from /usr/lib/libc.so.6
#1  0x00007ffff42d813a in abort () from /usr/lib/libc.so.6
#2  0x00007ffff4f8ce21 in QMessageLogger::fatal(char const*, ...) const () from /usr/lib/libQt5Core.so.5
#3  0x00007ffff4f883de in qt_assert(char const*, char const*, int) () from /usr/lib/libQt5Core.so.5
#4  0x00007ffff7b22893 in KateViewInternal::viewLineOffset (this=0x1524af0, virtualCursor=[77, 60], offset=1, keepX=false)
  at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewinternal.cpp:1420
#5  0x00007ffff7b1fad8 in KateViewInternal::makeVisible (this=0x1524af0, c=[39, 74], endCol=74, force=false, center=false, calledExternally=false)
  at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewinternal.cpp:654
#6  0x00007ffff7b2571b in KateViewInternal::updateCursor (this=0x1524af0, newCursor=[77, 74], force=true, center=false, calledExternally=false)
  at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewinternal.cpp:1989
#7  0x00007ffff7b200ac in KateViewInternal::slotRegionVisibilityChanged (this=0x1524af0) at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewinternal.cpp:715
#8  0x00007ffff7c4abf7 in KateViewInternal::qt_static_metacall (_o=0x1524af0, _c=QMetaObject::InvokeMetaMethod, _id=17, _a=0x7fffffffa2a0)
  at /ssd/milian/projects/kf5/build-dbg/frameworks/ktexteditor/src/KF5TextEditor_automoc.dir/moc_kateviewintern_YFXRDYDUXCALC6.cpp:193
#9  0x00007ffff51acd79 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#10 0x00007ffff7c31fc7 in Kate::TextFolding::foldingRangesChanged (this=0x15325f0)
  at /ssd/milian/projects/kf5/build-dbg/frameworks/ktexteditor/src/KF5TextEditor_automoc.dir/moc_katetextfoldin_2TCCUOARTV3ZCX.cpp:134
#11 0x00007ffff79d6ee1 in Kate::TextFolding::updateFoldedRangesForNewRange (this=0x15325f0, newRange=0x1420b00) at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/buffer/katetextfolding.cpp:853
#12 0x00007ffff79d4757 in Kate::TextFolding::newFoldingRange (this=0x15325f0, range=[(0, 2) -> (38, 75)], flags=...) at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/buffer/katetextfolding.cpp:150
#13 0x00007ffff79d7e59 in Kate::TextFolding::importFoldingRanges (this=0x15325f0, folds=...) at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/buffer/katetextfolding.cpp:1026
#14 0x00007ffff7b18d92 in KTextEditor::ViewPrivate::applyFoldingState (this=0x1532460) at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateview.cpp:3511
#15 0x00007ffff7b0faa2 in KTextEditor::ViewPrivate::readSessionConfig (this=0x1532460, config=..., flags=empty QSet<QString>) at /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateview.cpp:1513
#16 0x0000000000457712 in KateViewSpace::createView (this=0x823660, doc=0x1397340) at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateviewspace.cpp:229
#17 0x000000000044c557 in KateViewManager::createView (this=0x8ba430, doc=0x1397340, vs=0x0) at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateviewmanager.cpp:453
#18 0x000000000044d1a1 in KateViewManager::activateView (this=0x8ba430, d=0x1397340) at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateviewmanager.cpp:676
#19 0x000000000044bc2d in KateViewManager::openUrl (this=0x8ba430, url=file:///ssd2/milian/projects/qt5/src/qtbase/src/corelib/kernel/qmetaobject.h, encoding="", activate=true, isTempFile=false, docInfo=...)
  at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateviewmanager.cpp:305
#20 0x000000000042e081 in KateApp::openDocUrl (this=0x7fffffffb0e0, url=file:///ssd2/milian/projects/qt5/src/qtbase/src/corelib/kernel/qmetaobject.h, encoding="", isTempFile=false)
  at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateapp.cpp:288
#21 0x000000000042d6ca in KateApp::startupKate (this=0x7fffffffb0e0) at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateapp.cpp:176
#22 0x000000000042cb17 in KateApp::init (this=0x7fffffffb0e0) at /home/milian/projects/kf5/src/kde/applications/kate/kate/kateapp.cpp:98
#23 0x0000000000428b4b in main (argc=4, argv=0x7fffffffc8f8) at /home/milian/projects/kf5/src/kde/applications/kate/kate/main.cpp:571

This can be fixed by applying the same logic as in the !forward case.

Details

Committed
mwolffApr 26 2017, 3:37 PM
Parents
R39:5f98480aeea8: SVN_SILENT made messages (.desktop file) - always resolve ours
Branches
Unknown
Tags
Unknown