summaryrefslogtreecommitdiff
path: root/chart2/source
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-05-11 11:30:46 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-05-11 14:23:25 +0200
commit39848b5f802c539e5d630bb7905d3d9b8d966c26 (patch)
treebae28036a93cc4d9ce0576601b1c10e7f9a63cfb /chart2/source
parent1fdb056ef034109f330b79c85da39af44c3a8251 (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.cxx5
-rw-r--r--chart2/source/controller/dialogs/tp_ChartType.cxx14
-rw-r--r--chart2/source/tools/AxisHelper.cxx8
-rw-r--r--chart2/source/tools/ReferenceSizeProvider.cxx2
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 =