diff options
author | Eike Rathke <erack@redhat.com> | 2014-12-20 23:48:52 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-12-11 00:47:20 +0100 |
commit | d9c15867e914d91a7e86c499ffb6ee62f5b443f6 (patch) | |
tree | 56a3e60fc7ad603761bb6efcf61359be76871221 /sc | |
parent | b5b65a2847ed98f3cc65798edda42b28d1c2ae76 (diff) |
fdo#86215 pool new ScPatternAttr if source and destination are different docs
Change-Id: Icdb68af83a0b208f9a427ee61ae18020c8835a41
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/data/column4.cxx | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index 5c49a78d18ee..6b0412bfe8c0 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -149,6 +149,8 @@ void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, if (!pBlockPos) return; + bool bSameDocPool = (rCxt.getClipDoc()->GetPool() == pDocument->GetPool()); + ScCellValue& rSrcCell = rCxt.getSingleCell(nColOffset); InsertDeleteFlags nFlags = rCxt.getInsertFlag(); @@ -157,7 +159,8 @@ void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, { if (!rCxt.isSkipAttrForEmptyCells() || rSrcCell.meType != CELLTYPE_NONE) { - const ScPatternAttr* pAttr = rCxt.getSingleCellPattern(nColOffset); + const ScPatternAttr* pAttr = (bSameDocPool ? rCxt.getSingleCellPattern(nColOffset) : + rCxt.getSingleCellPattern(nColOffset)->PutInPool( pDocument, rCxt.getClipDoc())); pAttrArray->SetPatternArea(nRow1, nRow2, pAttr, true); } } @@ -182,8 +185,7 @@ void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, { // Compare the ScDocumentPool* to determine if we are copying within the // same document. If not, re-intern shared strings. - svl::SharedStringPool* pSharedStringPool = (rCxt.getClipDoc()->GetPool() != pDocument->GetPool()) ? - &pDocument->GetSharedStringPool() : NULL; + svl::SharedStringPool* pSharedStringPool = (bSameDocPool ? NULL : &pDocument->GetSharedStringPool()); svl::SharedString aStr = (pSharedStringPool ? pSharedStringPool->intern( rSrcCell.mpString->getString()) : *rSrcCell.mpString); |