sc/source/filter/excel/xilink.cxx |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

New commits:
commit 15054d82cc94a392ff708d499e395ab184818c24
Author: Eike Rathke <er...@redhat.com>
Date:   Thu Oct 20 00:58:06 2016 +0200

    Resolves: tdf#85553 intern SharedString of cached external references result
    
    (cherry picked from commit 0d2797fdb06f504e7213b3859a53c363f4f56bc9)
    
     Conflicts:
        sc/source/filter/excel/xilink.cxx
    
    Change-Id: I13f19b5bd5f2897eb48af69742be885803cca066
    Reviewed-on: https://gerrit.libreoffice.org/30069
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/filter/excel/xilink.cxx 
b/sc/source/filter/excel/xilink.cxx
index 467cc99..f779a5f 100644
--- a/sc/source/filter/excel/xilink.cxx
+++ b/sc/source/filter/excel/xilink.cxx
@@ -71,7 +71,8 @@ public:
     /** Reads a CRN record (external referenced cell) at the specified 
address. */
     void                ReadCrn( XclImpStream& rStrm, const XclAddress& 
rXclPos );
 
-    void                LoadCachedValues(const 
ScExternalRefCache::TableTypeRef& pCacheTable);
+    void                LoadCachedValues( const 
ScExternalRefCache::TableTypeRef& pCacheTable,
+                                          svl::SharedStringPool& rPool );
 
 private:
     typedef std::shared_ptr< XclImpCrn > XclImpCrnRef;
@@ -574,7 +575,8 @@ void XclImpSupbookTab::ReadCrn( XclImpStream& rStrm, const 
XclAddress& rXclPos )
     maCrnList.push_back( crnRef );
 }
 
-void XclImpSupbookTab::LoadCachedValues(const 
ScExternalRefCache::TableTypeRef& pCacheTable)
+void XclImpSupbookTab::LoadCachedValues( const 
ScExternalRefCache::TableTypeRef& pCacheTable,
+        svl::SharedStringPool& rPool )
 {
     if (maCrnList.empty())
         return;
@@ -608,8 +610,8 @@ void XclImpSupbookTab::LoadCachedValues(const 
ScExternalRefCache::TableTypeRef&
             break;
             case EXC_CACHEDVAL_STRING:
             {
-                const OUString& rStr = pCrn->GetString();
-                ScExternalRefCache::TokenRef pToken(new 
formula::FormulaStringToken(rStr));
+                svl::SharedString aSS( rPool.intern( pCrn->GetString()));
+                ScExternalRefCache::TokenRef pToken(new 
formula::FormulaStringToken( aSS));
                 pCacheTable->setCell(rAddr.mnCol, rAddr.mnRow, pToken, 0, 
false);
             }
             break;
@@ -753,7 +755,7 @@ void XclImpSupbook::LoadCachedValues()
     {
         const OUString& rTabName = (*itTab)->GetTabName();
         ScExternalRefCache::TableTypeRef pCacheTable = 
pRefMgr->getCacheTable(nFileId, rTabName, true);
-        (*itTab)->LoadCachedValues(pCacheTable);
+        (*itTab)->LoadCachedValues( pCacheTable, GetSharedStringPool());
         pCacheTable->setWholeTableCached();
     }
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to