diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2011-05-26 00:05:32 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2011-05-26 00:07:20 -0400 |
commit | 1f26bb6e3effeccffee1bec1a0e730e0e952f3a8 (patch) | |
tree | 303ff4c9ce543a58031fbdc88a96de39f13582ea /sc/source/core/data/dpobject.cxx | |
parent | ca6cbba48c6ff11b4ca704fcefa118f64e357dd0 (diff) |
fdo#37458: Prevent crash on named range deletion.
Simple NULL pointer checks will prevent crashes....
Diffstat (limited to 'sc/source/core/data/dpobject.cxx')
-rw-r--r-- | sc/source/core/data/dpobject.cxx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx index d3c778ad3..c661a7046 100644 --- a/sc/source/core/data/dpobject.cxx +++ b/sc/source/core/data/dpobject.cxx @@ -469,8 +469,11 @@ void ScDPObject::CreateObjects() { DBG_ASSERT( !pServDesc, "DPSource could not be created" ); ScDPTableData* pData = GetTableData(); - ScDPSource* pSource = new ScDPSource( pData ); - xSource = pSource; + if (pData) + { + ScDPSource* pSource = new ScDPSource( pData ); + xSource = pSource; + } } if (pSaveData) @@ -1848,6 +1851,9 @@ sal_Bool ScDPObject::FillOldParam(ScPivotParam& rParam) const { ((ScDPObject*)this)->CreateObjects(); // xSource is needed for field numbers + if (!xSource.is()) + return false; + rParam.nCol = aOutRange.aStart.Col(); rParam.nRow = aOutRange.aStart.Row(); rParam.nTab = aOutRange.aStart.Tab(); @@ -1941,6 +1947,8 @@ sal_Bool ScDPObject::FillLabelData(ScPivotParam& rParam) rParam.maLabelArray.clear(); ((ScDPObject*)this)->CreateObjects(); + if (!xSource.is()) + return false; uno::Reference<container::XNameAccess> xDimsName = xSource->getDimensions(); uno::Reference<container::XIndexAccess> xDims = new ScNameToIndexAccess( xDimsName ); |