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 | eafe57da830decb9ed3ac99af83de75489aa8c45 (patch) | |
tree | a174dc6db3375ee586595e1f6f9812deba91c916 | |
parent | 4f5e783c066373e1776cddf48ce935ce1475b37d (diff) |
fdo#37458: Prevent crash on named range deletion.
Simple NULL pointer checks will prevent crashes....
-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 9ebad932c5de..0c919515d074 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 ); |