diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-05-11 11:30:46 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-05-11 14:23:25 +0200 |
commit | 39848b5f802c539e5d630bb7905d3d9b8d966c26 (patch) | |
tree | bae28036a93cc4d9ce0576601b1c10e7f9a63cfb /chart2/source | |
parent | 1fdb056ef034109f330b79c85da39af44c3a8251 (diff) |
tdf#155231 CRASH: with embedded OLE chart
regressions from commits like
commit 70595c0291e4cc137158c77f6136025b10ce6728
Author: Noel Grandin <noel.grandin@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 <xiscofauli@libreoffice.org>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/controller/dialogs/ChartTypeDialogController.cxx | 5 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/tp_ChartType.cxx | 14 | ||||
-rw-r--r-- | chart2/source/tools/AxisHelper.cxx | 8 | ||||
-rw-r--r-- | chart2/source/tools/ReferenceSizeProvider.cxx | 2 |
4 files changed, 20 insertions, 9 deletions
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 = |