sc/source/ui/inc/pfuncache.hxx | 14 +++++++------- sc/source/ui/unoobj/docuno.cxx | 12 ++++++------ sw/source/uibase/uiview/uivwimp.cxx | 2 ++ 3 files changed, 15 insertions(+), 13 deletions(-)
New commits: commit 558dface96fbc5f487b16cfa1bf3c3ea20776331 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Fri Jul 2 11:19:39 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Jul 2 12:29:42 2021 +0200 fix potential use-after-free in SwClipboardChangeListener we think we're seeing this in COOL Change-Id: I29a287b032158076a99a836d98113d1623ebef99 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118277 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/uibase/uiview/uivwimp.cxx b/sw/source/uibase/uiview/uivwimp.cxx index 336ce8de1975..6ad240701960 100644 --- a/sw/source/uibase/uiview/uivwimp.cxx +++ b/sw/source/uibase/uiview/uivwimp.cxx @@ -287,6 +287,8 @@ SwClipboardChangeListener::~SwClipboardChangeListener() void SAL_CALL SwClipboardChangeListener::disposing( const EventObject& /*rEventObject*/ ) { + SolarMutexGuard aGuard; + pView = nullptr; // so we don't touch the view if changedContents somehow fires afterwards } void SAL_CALL SwClipboardChangeListener::changedContents( const css::datatransfer::clipboard::ClipboardEvent& rEventObject ) commit e594c5e408593622bb70d54ef03ec5ca09a2d721 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Fri Jul 2 10:50:47 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Jul 2 12:29:34 2021 +0200 convert ScPrintSelectionMode to scoped enum Change-Id: I94d2a4e371ebd8274c5b5c3f01eea70a77780e73 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118276 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/source/ui/inc/pfuncache.hxx b/sc/source/ui/inc/pfuncache.hxx index 902ea7ade517..c3324e2f69f6 100644 --- a/sc/source/ui/inc/pfuncache.hxx +++ b/sc/source/ui/inc/pfuncache.hxx @@ -30,13 +30,13 @@ class OutputDevice; /** Possible types of selection for print functions */ -enum ScPrintSelectionMode +enum class ScPrintSelectionMode { - SC_PRINTSEL_INVALID, - SC_PRINTSEL_DOCUMENT, - SC_PRINTSEL_CURSOR, - SC_PRINTSEL_RANGE, - SC_PRINTSEL_RANGE_EXCLUSIVELY_OLE_AND_DRAW_OBJECTS + Invalid, + Document, + Cursor, + Range, + RangeExclusivelyOleAndDrawObjects }; /** Stores the selection in the ScPrintFuncCache so it is only used @@ -49,7 +49,7 @@ class ScPrintSelectionStatus ScPrintOptions aOptions; public: - ScPrintSelectionStatus() : eMode(SC_PRINTSEL_INVALID) {} + ScPrintSelectionStatus() : eMode(ScPrintSelectionMode::Invalid) {} void SetMode(ScPrintSelectionMode eNew) { eMode = eNew; } void SetRanges(const ScRangeList& rNew) { aRanges = rNew; } diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 5f625839f490..0836e0e7ed7f 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -1577,10 +1577,10 @@ bool ScModelObj::FillRenderMarkData( const uno::Any& aSelection, if ( bCursor || bSheet ) // nothing selected -> use whole tables { rMark.ResetMark(); // doesn't change table selection - rStatus.SetMode( SC_PRINTSEL_CURSOR ); + rStatus.SetMode( ScPrintSelectionMode::Cursor ); } else - rStatus.SetMode( SC_PRINTSEL_RANGE ); + rStatus.SetMode( ScPrintSelectionMode::Range ); rStatus.SetRanges( rRanges ); bDone = true; @@ -1603,7 +1603,7 @@ bool ScModelObj::FillRenderMarkData( const uno::Any& aSelection, if( rMark.IsMarked() && !rMark.IsMultiMarked() ) { - rStatus.SetMode( SC_PRINTSEL_RANGE_EXCLUSIVELY_OLE_AND_DRAW_OBJECTS ); + rStatus.SetMode( ScPrintSelectionMode::RangeExclusivelyOleAndDrawObjects ); bDone = true; } } @@ -1616,7 +1616,7 @@ bool ScModelObj::FillRenderMarkData( const uno::Any& aSelection, SCTAB nTabCount = pDocShell->GetDocument().GetTableCount(); for (SCTAB nTab = 0; nTab < nTabCount; nTab++) rMark.SelectTable( nTab, true ); - rStatus.SetMode( SC_PRINTSEL_DOCUMENT ); + rStatus.SetMode( ScPrintSelectionMode::Document ); bDone = true; } // other selection types aren't supported @@ -1744,7 +1744,7 @@ static sal_Int32 lcl_GetRendererNum( sal_Int32 nSelRenderer, const OUString& rPa static bool lcl_renderSelectionToGraphic( bool bRenderToGraphic, const ScPrintSelectionStatus& rStatus ) { - return bRenderToGraphic && rStatus.GetMode() == SC_PRINTSEL_RANGE; + return bRenderToGraphic && rStatus.GetMode() == ScPrintSelectionMode::Range; } uno::Sequence<beans::PropertyValue> SAL_CALL ScModelObj::getRenderer( sal_Int32 nSelRenderer, @@ -2148,7 +2148,7 @@ void SAL_CALL ScModelObj::render( sal_Int32 nSelRenderer, const uno::Any& aSelec pPrintFunc->SetDrawView( aDrawViewKeeper.mpDrawView.get() ); pPrintFunc->SetRenderFlag( true ); - if( aStatus.GetMode() == SC_PRINTSEL_RANGE_EXCLUSIVELY_OLE_AND_DRAW_OBJECTS ) + if( aStatus.GetMode() == ScPrintSelectionMode::RangeExclusivelyOleAndDrawObjects ) pPrintFunc->SetExclusivelyDrawOleAndDrawObjects(); sal_Int32 nContent = 0; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits