sw/source/core/crsr/swcrsr.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
New commits: commit 2b96107a19177e0cf3561b32b2431cfed9615437 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Sat May 10 12:30:29 2025 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Sat May 10 20:47:24 2025 +0200 crash with apparent SwNoTextFrame* cast to SwTextFrame* #0 __gnu_cxx::__normal_iterator<sw::Extent const*, std::vector<sw::Extent, std::allocator<sw::Extent> > >::__normal_iterator (__i=<error reading variable>, this=<optimized out>) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_iterator.h:1072 #1 std::vector<sw::Extent, std::allocator<sw::Extent> >::begin (this=0x22) at /opt/rh/devtoolset-12/root/usr/include/c++/12/bits/stl_vector.h:879 #2 sw::MapModelToView (rMerged=..., pNode=0x0, nIndex=0) at sw/source/core/text/txtfrm.cxx:1315 #3 0x00007ff57a86ec75 in SwTextFrame::MapModelToView (this=<optimized out>, pNode=<optimized out>, nIndex=<optimized out>) at sw/source/core/text/txtfrm.cxx:1384 #4 0x00007ff57a86ec9f in SwTextFrame::MapModelToViewPos (this=this@entry=0x37d909a0, rPos=...) at sw/source/core/text/txtfrm.cxx:1396 #5 0x00007ff57a426543 in SwCursor::LeftRight(bool, unsigned short, SwCursorSkipMode, bool, bool, bool, SwRootFrame const*, bool) () at sw/source/core/crsr/swcrsr.cxx:1776 #6 0x00007ff57a3fafe4 in SwCursorShell::LeftRight(bool, unsigned short, SwCursorSkipMode, bool) () at sw/inc/crsrsh.hxx:495 #7 0x00007ff57a627a7a in SwCursorShell::Right (bAllowVisual=false, nMode=SwCursorSkipMode::Chars, nCnt=1, this=0x37d51780) at sw/inc/crsrsh.hxx:379 #8 SwEditShell::SetExtTextInputData(CommandExtTextInputData const&) () at sw/source/core/edit/editsh.cxx:1019 #9 0x00007ff57ad8bd9d in SwEditWin::Command(CommandEvent const&) () at sw/source/uibase/docvw/edtwin.c (gdb) print *this $28 = {<SwContentFrame> = {<SwFrame> = {<SwFrameAreaDefinition> = {_vptr.SwFrameAreaDefinition = 0x7ff57b3f0340 <vtable for SwNoTextFrame+16>, maFrameArea = { m_Point = {<PointTemplate<Point, Size>> = {<PointTemplateBase> = {<Pair> = {mnA = 1418, mnB = 1418}, <No data fields>}, <No data fields>}, <No data fields>}, m_Size = {<SizeTemplate<Size>> = {<SizeTemplateBase> = {<Pair> = {mnA = 9972, mnB = 5496}, <No data fields>}, <No data fields>}, <No data fields>}}, maFramePrintArea = {m_Point = {<PointTemplate<Point, Size>> = {<PointTemplateBase> = {<Pair> = {mnA = 0, mnB = 0}, <No data fields>}, <No data fields>}, <No data fields>}, m_Size = {<SizeTemplate<Size>> = {<SizeTemplateBase> = {<Pair> = {mnA = 9972, mnB = 5496}, <No data fields>}, <No data fields>}, <No data fields>}}, mnFrameId = 24, mbFrameAreaPositionValid = true, mbFrameAreaSizeValid = true, mbFramePrintAreaValid = true, static snLastFrameId = 31}, <SwClient> = {<sw::WriterListener> = { _vptr.WriterListener = 0x7ff57b3f04a0 <vtable for SwNoTextFrame+368>, m_pLeft = 0x0, m_pRight = 0x37d51910}, m_pRegisteredIn = 0x37c42a20}, <SfxBroadcaster> = {_vptr.SfxBroadcaster = 0x7ff57b3f04f0 <vtable for SwNoTextFrame+448>, m_RemovedPositions = std::vector of length 0, capacity 0, m_Listeners = std::vector of length 0, capacity 0}, static spCache = 0x3780e4d0, mpRoot = 0x37b49ba0, mpUpper = 0x37c33460, mpNext = 0x0, mpPrev = 0x0, Python Exception <class 'ValueError'> Unsupported implementation for unique_ptr: std::__uniq_ptr_data<SwSortedObjs, std::default_delete<SwSortedObjs>, true, true>: m_pDrawObjs = {_M_t = {<std::__uniq_ptr_impl<SwSortedObjs, std::default_delete<SwSortedObjs> >> = { _M_t = std::tuple containing = {[1] = 0x0, [2] = {<No data fields>}}}, <No data fields>}}, mnFrameType = SwFrameType::NoTxt, mbInDtor = false, mbInvalidR2L = false, mbDerivedR2L = true, mbRightToLeft = false, mbInvalidVert = false, mbDerivedVert = true, mbVertical = false, mbVertLR = false, mbVertLRBT = false, mbValidLineNum = false, mbFixSize = false, mbCompletePaint = false, mbRetouche = false, mbInfInvalid = false, mbInfBody = false, mbInfTab = false, mbInfFly = true, mbInfFootnote = false, mbInfSct = false, mbColLocked = false, m_isInDestroy = false, mnForbidDelete = 0}, <SwFlowFrame> = { _vptr.SwFlowFrame = 0x7ff57b3f0518 <vtable for SwNoTextFrame+488>, m_rThis = @0x37d909a0, static s_bMoveBwdJump = false, m_pFollow = 0x0, m_pPrecede = 0x0, m_bLockJoin = false, m_bUndersized = false, m_bFlyLock = false}, <No data fields>}, static s_pTextCache = 0x3780fd60, mnAllLines = 0, mnThisLines = 0, mnFlyAnchorOfst = 0, mnFlyAnchorOfstNoWrap = 939852432, mnFlyAnchorVertOfstNoWrap = 49, mnFootnoteLine = 940845376, mnHeightOfLastLine = 954225152, mnAdditionalFirstLineOffset = 954225136, Python Exception <class 'ValueError'> Unsupported implementation for unique_ptr: std::__uniq_ptr_data<sw::MergedPara, std::default_delete<sw::MergedPara>, true, true>: m_pMergedPara = {_M_t = {<std::__uniq_ptr_impl<sw::MergedPara, std::default_delete<sw::MergedPara> >> = { _M_t = std::tuple containing = {[1] = 0x2, [2] = {<No data fields>}}}, <No data fields>}}, mnOffset = {m_value = 1750611950}, mnCacheIndex = 32757, mbLocked = false, mbWidow = false, mbJustWidow = false, mbEmpty = false, mbInFootnoteConnect = false, mbFootnote = false, mbRepaint = false, mbHasRotatedPortions = false, mbFieldFollow = false, mbHasAnimation = false, mbIsSwapped = false, mbFollowFormatAllowed = false} Change-Id: I936dc000deb297a5d98b088e46399ec3563c57e7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185134 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Jenkins diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx index c66a9f606a27..0be9e3ba80a9 100644 --- a/sw/source/core/crsr/swcrsr.cxx +++ b/sw/source/core/crsr/swcrsr.cxx @@ -1736,19 +1736,19 @@ SwCursor::DoSetBidiLevelLeftRight( static const SwTextFrame* GetTextFrame(const SwNode& rNode, SwRootFrame const*const pLayout) { - SwTextFrame const* pFrame(nullptr); + SwContentFrame const* pFrame(nullptr); if (pLayout) { - pFrame = static_cast<SwTextFrame const *>(rNode.GetContentNode()->getLayoutFrame(pLayout)); + pFrame = rNode.GetContentNode()->getLayoutFrame(pLayout); if (pFrame) { while (pFrame->GetPrecede()) { - pFrame = static_cast<SwTextFrame const*>(pFrame->GetPrecede()); + pFrame = static_cast<SwContentFrame const*>(pFrame->GetPrecede()); } } } - return pFrame; + return pFrame ? pFrame->DynCastTextFrame() : nullptr; } bool SwCursor::LeftRight( bool bLeft, sal_uInt16 nCnt, SwCursorSkipMode nMode,