To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=84467
                 Issue #|84467
                 Summary|Break iterator hangs with Complex (SA) characters when
                        | CTL language=none
               Component|l10n
                 Version|OOo 2.3
                Platform|All
                     URL|
              OS/Version|All
                  Status|UNCONFIRMED
       Status whiteboard|
                Keywords|
              Resolution|
              Issue type|DEFECT
                Priority|P3
            Subcomponent|i18npool
             Assigned to|er
             Reported by|kstribley





------- Additional comments from [EMAIL PROTECTED] Tue Dec 11 16:00:59 +0000 
2007 -------
Steps to reproduce:
-Set the CTL language to [none].
-Type some text in Myanmar/Thai/Lao e.g. မြန်မာ and cut and paste it until it
occupies more than one line. The software will hang in an infinite loop. (If you
need a Myanmar font, there is one here: http://scripts.sil.org/padauk). I was
able to reproduce the hang using a few characters of Lao and Thai as well.

Work around: set the CTL language to Thai.

I've looked at this in a build of OOG680_m7 with debug enabled for i18npool and
ICU. It appears that the RuleBasedBreakIterator created at line 137 in
breakiterator_unicode.cxx does not have a breaktype set for the rule dict_word,
so it is left at fBreakType=-1. If you have a sequence of "dictionary
characters" then the while loop inside RuleBasedBreakIterator::checkDictionary
at line 1598 gets in an infinite loop. lbe->findBreaks uses the
UnhandledEngine::findBreaks(), which contrary to the comment in rbbi.cpp line
1623, does not change the pointer position at all when breakType is out of 
range. 

I think the real bug is that the breakType isn't set in the
RuleBasedBreakIterator that OpenOffice loads, but I'm not very familiar with how
the data loaded by udata_open was created. It is also possible to prevent the
loop by patching the icu_3_6::UnhandledEngine::findBreaks method in brkeng.cpp
to still advance the pointer to the end of the range when the breakType is 
invalid.

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to