chart2/source/controller/dialogs/ChartTypeDialogController.cxx | 5 ++- chart2/source/controller/dialogs/tp_ChartType.cxx | 14 ++++++---- chart2/source/tools/AxisHelper.cxx | 8 ++++- chart2/source/tools/ReferenceSizeProvider.cxx | 2 + 4 files changed, 20 insertions(+), 9 deletions(-)
New commits: commit 39848b5f802c539e5d630bb7905d3d9b8d966c26 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu May 11 11:30:46 2023 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu May 11 14:23:25 2023 +0200 tdf#155231 CRASH: with embedded OLE chart regressions from commits like commit 70595c0291e4cc137158c77f6136025b10ce6728 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Thu Mar 16 09:20:17 2023 +0200 move setDimension/getDimension inside chart2::Diagram Change-Id: I535d8e74d621821bde7d31894fe7f0350e91c941 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151664 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx index 581e5e89cad6..b52dbc289743 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx @@ -315,8 +315,9 @@ void ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParame // locked controllers ControllerLockGuardUNO aCtrlLockGuard( xChartModel ); rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); - Diagram::tTemplateWithServiceName aTemplateWithService( - xDiagram->getTemplate( xTemplateManager )); + Diagram::tTemplateWithServiceName aTemplateWithService; + if (xDiagram) + aTemplateWithService = xDiagram->getTemplate( xTemplateManager ); if( aTemplateWithService.xChartTypeTemplate.is()) aTemplateWithService.xChartTypeTemplate->resetStyles2( xDiagram ); xTemplate->changeDiagram( xDiagram ); diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx index 5c73ed11eda2..e0ddd62cd6ed 100644 --- a/chart2/source/controller/dialogs/tp_ChartType.cxx +++ b/chart2/source/controller/dialogs/tp_ChartType.cxx @@ -245,15 +245,18 @@ void ChartTypeTabPage::selectMainType() m_pCurrentMainType->adjustParameterToMainType( aParameter ); commitToModel( aParameter ); //detect the new ThreeDLookScheme - aParameter.eThreeDLookScheme = m_xChartModel->getFirstChartDiagram()->detectScheme(); + aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Unknown; + rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); + if (xDiagram) + aParameter.eThreeDLookScheme = m_xChartModel->getFirstChartDiagram()->detectScheme(); if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic) aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic; - rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); try { - xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; + if (xDiagram) + xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; } catch ( const uno::Exception& ) { @@ -305,8 +308,9 @@ void ChartTypeTabPage::initializePage() return; rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = m_xChartModel->getTypeManager(); rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); - Diagram::tTemplateWithServiceName aTemplate = - xDiagram->getTemplate( xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplate; + if (xDiagram) + aTemplate = xDiagram->getTemplate( xChartTypeManager ); OUString aServiceName( aTemplate.sServiceName ); bool bFound = false; diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx index 7e8229352181..e8e90c5e429f 100644 --- a/chart2/source/tools/AxisHelper.cxx +++ b/chart2/source/tools/AxisHelper.cxx @@ -849,11 +849,15 @@ void AxisHelper::getAxisOrGridPossibilities( Sequence< sal_Bool >& rPossibilityL rPossibilityList.realloc(6); sal_Bool* pPossibilityList = rPossibilityList.getArray(); - sal_Int32 nDimensionCount = xDiagram->getDimension(); + sal_Int32 nDimensionCount = -1; + if (xDiagram) + nDimensionCount = xDiagram->getDimension(); //set possibilities: sal_Int32 nIndex=0; - rtl::Reference< ChartType > xChartType = xDiagram->getChartTypeByIndex( 0 ); + rtl::Reference< ChartType > xChartType; + if (xDiagram) + xChartType = xDiagram->getChartTypeByIndex( 0 ); for(nIndex=0;nIndex<3;nIndex++) pPossibilityList[nIndex]=ChartTypeHelper::isSupportingMainAxis(xChartType,nDimensionCount,nIndex); for(nIndex=3;nIndex<6;nIndex++) diff --git a/chart2/source/tools/ReferenceSizeProvider.cxx b/chart2/source/tools/ReferenceSizeProvider.cxx index 6c99d4e2caeb..f7d6f3525c48 100644 --- a/chart2/source/tools/ReferenceSizeProvider.cxx +++ b/chart2/source/tools/ReferenceSizeProvider.cxx @@ -95,6 +95,8 @@ void ReferenceSizeProvider::setValuesAtTitle( void ReferenceSizeProvider::setValuesAtAllDataSeries() { rtl::Reference< Diagram > xDiagram( m_xChartDoc->getFirstChartDiagram()); + if (!xDiagram) + return; // DataSeries/Points std::vector< rtl::Reference< DataSeries > > aSeries =