summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2011-05-26 00:05:32 -0400
committerKohei Yoshida <kyoshida@novell.com>2011-05-26 00:07:20 -0400
commit1f26bb6e3effeccffee1bec1a0e730e0e952f3a8 (patch)
tree303ff4c9ce543a58031fbdc88a96de39f13582ea
parentca6cbba48c6ff11b4ca704fcefa118f64e357dd0 (diff)
fdo#37458: Prevent crash on named range deletion.
Simple NULL pointer checks will prevent crashes....
-rw-r--r--sc/source/core/data/dpobject.cxx12
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 );