summaryrefslogtreecommitdiff
path: root/formula
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-12-15 17:44:30 +0100
committerAndras Timar <andras.timar@collabora.com>2015-12-21 13:16:06 +0100
commit8d42566b24aa9bcd54075531189a37432a752f9c (patch)
tree50b8ce04aca1309d3f9e137857a8739318fd442b /formula
parentc2484097f060d02c72c38c70785663a7363665bf (diff)
Resolves: tdf#95440 SharedString are interned per document, re-intern
... if literal strings are copied with formula expression tokens. (cherry picked from commit dad412e07f805a53ad73ce2e80d187a70c77e8de) Conflicts: include/formula/token.hxx Change-Id: I13526907bb6c2c605c6ed9584fa6e3f2b18623b8 Reviewed-on: https://gerrit.libreoffice.org/20731 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> (cherry picked from commit 58c8f4dc6c7d6897e36c0c754162035f70e3385f)
Diffstat (limited to 'formula')
-rw-r--r--formula/source/core/api/token.cxx30
1 files changed, 30 insertions, 0 deletions
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 9f16f4ce90d0..a8df23978588 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
+ }
+ }
+}
+
/*----------------------------------------------------------------------*/
@@ -1653,6 +1673,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();
@@ -1674,6 +1699,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();