Kaydet (Commit) f6b2349e authored tarafından Eike Rathke's avatar Eike Rathke

Resolves: tdf#114406 treat % as the operator that it is

Regression from

    commit 73c7e092
    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 a8a8ff59
    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
üst 814ff530
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment