Skip to content

Commit

Permalink
null pattern deref seen in ScViewData::SetEditEngine
Browse files Browse the repository at this point in the history
warn and use the default pool pattern if this happens

 #0  WhichRangesContainer::getOffsetFromWhich (this=this@entry=0x38, nWhich=nWhich@entry=129) at libreoffice/svl/source/items/itemset.cxx:1895
 #1  0x00007fe0179fa4ac in SfxItemSet::Get (this=0x10, nWhich=129, bSrchInParent=<optimized out>) at libreoffice/svl/source/items/itemset.cxx:1152
 #2  0x00007fe00736aa2e in ScPatternAttr::GetItem (nWhichP=129, this=0x0) at libreoffice/sc/inc/patattr.hxx:71
 #3  ScPatternAttr::GetItem<SvxHorJustifyItem> (nWhich=..., this=0x0) at libreoffice/sc/inc/patattr.hxx:73
 #4  ScViewData::SetEditEngine (this=this@entry=0x3323c540, eWhich=eWhich@entry=SC_SPLIT_BOTTOMLEFT, pNewEngine=<optimized out>, pWin=pWin@entry=0x32eec4f0, nNewX=nNewX@entry=-1, nNewY=nNewY@entry=-1)
     at libreoffice/sc/source/ui/view/viewdata.cxx:1613
 #5  0x00007fe00731c2f1 in ScTabView::UpdateEditView (this=this@entry=0x3323c538) at libreoffice/sc/source/ui/view/tabview3.cxx:2248
 #6  0x00007fe00731c9ae in ScTabView::UpdateFormulas (this=this@entry=0x3323c538, nStartCol=nStartCol@entry=-1, nStartRow=nStartRow@entry=-1, nEndCol=nEndCol@entry=-1, nEndRow=nEndRow@entry=-1)
     at libreoffice/sc/source/ui/view/tabview3.cxx:2393
 #7  0x00007fe007338bc5 in ScTabViewShell::Notify (this=0x3323c330, rBC=..., rHint=...) at libreoffice/sc/source/ui/view/tabvwsh5.cxx:219
 #8  0x00007fe017a29bb9 in SfxBroadcaster::Broadcast (this=this@entry=0x2fd10a70, rHint=...) at libreoffice/svl/source/notify/SfxBroadcaster.cxx:40
 #9  0x00007fe006f27c3f in ScDocShell::PostDataChanged (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh3.cxx:95
 #10 0x00007fe006f17dfc in ScDocShell::SetDocumentModified (this=this@entry=0x2fd10a70) at libreoffice/sc/source/ui/docshell/docsh.cxx:3050
 #11 0x00007fe007382e7c in ScViewFunc::DeleteTables (this=this@entry=0x3464aa28, TheTabs=std::vector of length 1, capacity 1 = {...}, bRecord=<optimized out>, bRecord@entry=true)
     at libreoffice/sc/source/ui/view/viewfun2.cxx:2656
 #12 0x00007fe007350825 in ScTabViewShell::ExecuteTable (this=0x3464a820, rReq=...) at libreoffice/sc/source/ui/view/tabvwshf.cxx:910
 #13 0x00007fe0175d0cef in SfxDispatcher::Call_Impl (this=0x340a1b70, rShell=..., rSlot=..., rReq=..., bRecord=<optimized out>)
     at libreoffice/sfx2/source/control/dispatch.cxx:254
 #14 0x00007fe0175d8daa in SfxDispatcher::Execute (this=0x340a1b70, nSlot=<optimized out>, nCall=nCall@entry=SfxCallMode::RECORD, pArgs=pArgs@entry=0x7ffe3c51edf0, pInternalArgs=pInternalArgs@entry=0x7ffe3c51ed90, nModi=0)
     at libreoffice/sfx2/source/control/dispatch.cxx:813
 #15 0x00007fe0176166f5 in SfxDispatchController_Impl::dispatch (this=<optimized out>, aURL=..., aArgs=uno::Sequence of length 1 = {...}, rListener=empty uno::Reference)
    at libreoffice/include/sfx2/ctrlitem.hxx:63

Change-Id: Ib4851414a277a293d6bc44b4ffcd33d332e3c57e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173256
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
  • Loading branch information
caolanm authored and timar committed Sep 13, 2024
1 parent 5cf26ce commit 4f8a913
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions sc/source/ui/view/viewdata.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
#include <attrib.hxx>
#include <tabview.hxx>
#include <tabvwsh.hxx>
#include <docpool.hxx>
#include <docsh.hxx>
#include <patattr.hxx>
#include <editutil.hxx>
Expand Down Expand Up @@ -1610,6 +1611,11 @@ void ScViewData::SetEditEngine( ScSplitPos eWhich,
bEditActive[eWhich] = true;

const ScPatternAttr* pPattern = mrDoc.GetPattern(nNewX, nNewY, nTabNo);
if (!pPattern)
{
SAL_WARN("sc.viewdata", "No Pattern Found for: Col: " << nNewX << ", Row: " << nNewY << ", Tab: " << nTabNo);
pPattern = &(mrDoc.GetPool()->GetDefaultItem(ATTR_PATTERN));
}
SvxCellHorJustify eJust = pPattern->GetItem( ATTR_HOR_JUSTIFY ).GetValue();

bool bBreak = ( eJust == SvxCellHorJustify::Block ) ||
Expand Down

0 comments on commit 4f8a913

Please sign in to comment.