[Libreoffice-commits] core.git: Branch 'libreoffice-6-0' - sc/source
Eike Rathke
erack at redhat.com
Mon Dec 11 22:04:46 UTC 2017
sc/source/core/tool/compiler.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit b030bf19e29f031b0a640dd92c38d654785f1a99
Author: Eike Rathke <erack at redhat.com>
Date: Mon Dec 11 18:21:32 2017 +0100
Resolves: tdf#114406 treat % as the operator that it is
Regression from
commit 73c7e0921d752df53004ed55735f3e8888cc592f
Date: Tue Sep 20 21:39:10 2016 +0200
sc-perf: tdf#79023 for ODFF do not call SvNumberFormatter to determine numeric
for ODFF, and for OOXML
commit a8a8ff59c5749bbe1f2f58ea8fd42d66e6ae2a81
Date: Tue Sep 20 22:37:59 2016 +0200
sc-perf: tdf#79023 do not call SvNumberFormatter also for numbers in OOXML
Numbers followed by a percent operator like 100% were always
(wrongly) treated as one entity (by '%' having ScCharFlags::Value)
and incidentally handled by the number formatter's parser, which
so far "worked" in the sense that the correct constant number was
produced (i.e. 1 here), but the expression detail was lost.
The commits above for performance reasons when reading ODF or
OOXML files don't let a symbol pass through the number formatter's
parser anymore and the "100%" does not represent a strict number,
so lead to #NAME? error at the end.
Set the proper flags in the compiler's character table to treat
'%' as operator in all circumstances.
Change-Id: I266beb74a313c779370e5fac42f45d0fb5cdba0c
(cherry picked from commit f6b2349e880afa82f9267087fb48b6e4f8a9aa05)
Reviewed-on: https://gerrit.libreoffice.org/46254
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Jenkins <ci at libreoffice.org>
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 8f74f42276a4..3c6365a5e7c6 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -323,7 +323,7 @@ ScCompiler::Convention::Convention( FormulaGrammar::AddressConvention eConv )
/* $ */ t[36] = ScCharFlags::CharWord | ScCharFlags::Word | ScCharFlags::CharIdent | ScCharFlags::Ident;
if (FormulaGrammar::CONV_ODF == meConv)
/* $ */ t[36] |= ScCharFlags::OdfNameMarker;
-/* % */ t[37] = ScCharFlags::Value;
+/* % */ t[37] = ScCharFlags::Char | ScCharFlags::WordSep | ScCharFlags::ValueSep;
/* & */ t[38] = ScCharFlags::Char | ScCharFlags::WordSep | ScCharFlags::ValueSep;
/* ' */ t[39] = ScCharFlags::NameSep;
/* ( */ t[40] = ScCharFlags::Char | ScCharFlags::WordSep | ScCharFlags::ValueSep;
More information about the Libreoffice-commits
mailing list