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

--- Comment #44 from Arrigo Marchiori <ard...@yahoo.it> ---
Method com::sun::star::i18n::Transliteration_caseignore::loadModule() is used
to load "modules" for processing text.

There seems to be only one instance of Transliteration_caseignore for the whole
program (a "singleton").
Such instance is accessed via a utl::TransliterationWrapper instance.

There are several place where a TransliterationWrapper is constructed:

 1- ScGlobal::GetpTransliteration() -- specific for OpenOffice Calc. The object
is created with module TransliterationModules_IGNORE_CASE

 2- vcl::I18nHelper::ImplGetTransliterationWrapper(). The object is created
with modules TransliterationModules_IGNORE_CASE and
TransliterationModules_IGNORE_WIDTH.

 3- OnDemandTransliterationWrapper::get(). The object is created with the
modules passed to the OnDemandTransliterationWrapper constructor.
In fact, it also has a zero-parameter constructor, and the modules are passed
to the OnDemandTransliterationWrapper::init() method. This happens in
SvNumberFormatter::ImpConstruct. The IGNORE_CASE is the only module requested.

In fact, construction no. 2- instructs the singleton instance of
Transliteration_caseignore to load the IGNORE_WIDTH module alongside the
IGNORE_CASE.
This construction, in one case I could observe, is requested by method
ComboBox::ImplUpdateFloatSelection(). This looks like something that could
happen at any time.

Construction no. 1- and 3- are equivalent, because they request the same single
module IGNORE_CASE.

Construction no. 2- is frequently happening after the test document is loaded,
and before it is saved, therefore invalidating the in-memory list of database
ranges.

I believe that fixing this problem will consist of having both IGNORE_CASE and
IGNORE_WIDTH indicated in all attempts to construct a TransliterationWrapper. I
will try to follow this path and report here my results.

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

Reply via email to