https://bz.apache.org/ooo/show_bug.cgi?id=126680

Arrigo Marchiori <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|Windows 7                   |All
            Summary|Unable to save a document   |Unable to save a document
                   |in ODS with builds using    |in ODS with builds using
                   |non-Latin alphabets         |non-Latin alphabets, due to
                   |                            |changes of transliteration
                   |                            |rules at runtime

--- Comment #43 from Arrigo Marchiori <[email protected]> ---
Concentrating on the cyrillic build: method
Transliteration_caseignore::compare() is responsible for comparing strings.

The cyrillic word starts with 'б', that is the Unicode code point U+0431,
"Cyrillic small letter Be".

The first letter of the compared ASCII string is 'S'.

When the file is _loaded_ this 'S' is represented with code point U+0073,
"Latin small letter S".

When the file is _saved_ the same 'S' is represented with code point U+ff53,
"Fullwidth Latin small letter S".

These two codepoints are respectively ``smaller'' and ``bigger'' than U+0431
and this gives the problem: the database ranges, in memory, are not sorted
correctly any more.

If we close and reopen the same file, the second time 'S' is again represented
as U+ff53 _at loading time_. This allows the save to succeed.

When I wrote ``represented'' above, I meant the value returned by:
casefolding::getNextChar(). We must understand why the behavior of this method
changes at some point during AOO execution.

-- 
You are receiving this mail because:
You are the assignee for the issue.

Reply via email to