diff options
author | Eike Rathke <erack@redhat.com> | 2015-06-12 18:28:26 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-06-12 18:39:04 +0200 |
commit | 1930fe1942808c9293c061e516422993e6fd27fd (patch) | |
tree | 5be67df15fe65242ba431c65d8993943f911841a /sc | |
parent | 9be601f70dc824120b2944d421906d5ec9566b1d (diff) |
do not adjust RPN named expressions relative references, tdf#91842 follow-up
Change-Id: I5a991d3b86fec0a3800d8243f73eb764789c8c69
(cherry picked from commit 15f18d1bb6e76ea934a461031b2784564f9d00c1)
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/token.cxx | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index a30112eea25c..7a0dd0a25ee8 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -138,7 +138,25 @@ namespace // Handle all tokens in RPN, and code tokens only if they have a // reference count of 1, which means they are not referenced in // RPN. - return i == 0 && (*pp)->GetRef() > 1; + if (i == 0) + return (*pp)->GetRef() > 1; + + // Skip (do not adjust) relative references resulting from named + // expressions. + switch ((*pp)->GetType()) + { + case svSingleRef: + return (*pp)->GetSingleRef()->IsRelName(); + case svDoubleRef: + { + const ScComplexRefData& rRef = *(*pp)->GetDoubleRef(); + return rRef.Ref1.IsRelName() || rRef.Ref2.IsRelName(); + } + default: + ; // nothing + } + + return false; } }; |