Crash during Traditional Chinese <-> Simplified Chinese conversion
Matteo Casalin
matteo.casalin at gmx.com
Thu Jan 3 10:26:43 PST 2013
Hi all,
I've been lately struggling with crash in conversion from
Traditional to Simplified Chinese in Writer. After some debugging, I
tracked the problem to access to released memory, but I don't know ho to
proceed to solve the issue since it involves a deeper knowledge than I
have about Writer internal structure.
I really would appreciate if anybody could give me any hint on this.
Here are the details:
The conversion is handled by editeng::HangulHanjaConversion class, which
is used as a base class for SwHHCWrapper (and is also derived in a
parallel manner also in editeng itself). Without digging into details
(the flow is quite convoluted), the problem arises in SwTxtNode::Convert
(sw/source/core/txtnode/txtedt.cxx) as follow:
* line 1074: instantiate a SwLanguageIterator object, which builds a
list of pointers to non-copiable SwTxtAttr;
* line 1111: call SetLanguageAndFont, which destroys the original
SwTxtAttr items which the iterator still points to;
* line 1117: access the now deleted iterator items.
From my limited understanding, the issue is triggered by the presence
of non-chinese text intermixed with chinese one (but I could be wrong),
in this case the text was a numbered title like:
1. <some chinese characters>
where the "1. " should activate the call to SetLanguageAndFont.
I'm also asking permission to share the document which trigger the crash
(or a minimal one with the same characteristics) in case anybody would
like to give it a try.
Thanks in advance for any advice!
Cheers
Matteo
More information about the LibreOffice
mailing list