diff options
author | Eike Rathke <erack@redhat.com> | 2015-12-15 17:44:30 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-12-15 18:25:57 +0100 |
commit | 4ede95a90dc299ab2026285ba8baa95b63454cc2 (patch) | |
tree | 29ada12e769f35b33e7a53ed43003f926155071c /formula | |
parent | c4f6cd2848c60969043aa3d1804e138669a6f14a (diff) |
Resolves: tdf#95440 SharedString are interned per document, re-intern
... if literal strings are copied with formula expression tokens.
Change-Id: I13526907bb6c2c605c6ed9584fa6e3f2b18623b8
(cherry picked from commit dad412e07f805a53ad73ce2e80d187a70c77e8de)
Diffstat (limited to 'formula')
-rw-r--r-- | formula/source/core/api/token.cxx | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx index d46b02ded07a..339e927742fa 100644 --- a/formula/source/core/api/token.cxx +++ b/formula/source/core/api/token.cxx @@ -204,6 +204,11 @@ svl::SharedString FormulaToken::GetString() const return svl::SharedString(); // invalid string } +void FormulaToken::SetString( const svl::SharedString& ) +{ + SAL_WARN( "formula.core", "FormulaToken::SetString: virtual dummy called" ); +} + sal_uInt16 FormulaToken::GetIndex() const { SAL_WARN( "formula.core", "FormulaToken::GetIndex: virtual dummy called" ); @@ -1523,6 +1528,21 @@ FormulaToken* FormulaTokenArray::AddOpCode( OpCode eOp ) return AddToken( *pRet ); } +void FormulaTokenArray::ReinternStrings( svl::SharedStringPool& rPool ) +{ + for (sal_uInt16 i=0; i < nLen; ++i) + { + switch (pCode[i]->GetType()) + { + case svString: + pCode[i]->SetString( rPool.intern( pCode[i]->GetString().getString())); + break; + default: + ; // nothing + } + } +} + /*----------------------------------------------------------------------*/ @@ -1651,6 +1671,11 @@ svl::SharedString FormulaStringToken::GetString() const return maString; } +void FormulaStringToken::SetString( const svl::SharedString& rStr ) +{ + maString = rStr; +} + bool FormulaStringToken::operator==( const FormulaToken& r ) const { return FormulaToken::operator==( r ) && maString == r.GetString(); @@ -1672,6 +1697,11 @@ svl::SharedString FormulaStringOpToken::GetString() const return maString; } +void FormulaStringOpToken::SetString( const svl::SharedString& rStr ) +{ + maString = rStr; +} + bool FormulaStringOpToken::operator==( const FormulaToken& r ) const { return FormulaByteToken::operator==( r ) && maString == r.GetString(); |