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

do not call LayoutEngine::reset()

Calling reset() disposes everything the LayoutEngine knows in its
current state. While this may have prevented some obscure crash during
exit in the past (call was added 2003-03-27), it definitely leads to a
crash if the updated LayoutEngine "patch"
http://download.icu-project.org/files/icu4c/51.1/icu-51-layout-fix-10107.tgz
is applied as that sets fGlyphStorage=NULL (it doesn't delete
LEGlyphStorage though and thus may leak, but that patch is in the wild
now) and a later call to mpIcuLE->layoutChars() tries to access
fGlyphStorage->...() if mpIcuLE is reused.

For the patch mentioned see
http://site.icu-project.org/download/51#TOC-Known-Issues and
http://bugs.icu-project.org/trac/ticket/10107

Change-Id: I1b8f5c446c174d7d12b896b3ecd2a266645e8abc
üst bfa360c6
......@@ -1019,7 +1019,6 @@ bool IcuLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
mpIcuLE->getGlyphs( pIcuGlyphs, rcIcu );
mpIcuLE->getCharIndices( pCharIndices, rcIcu );
mpIcuLE->getGlyphPositions( &pGlyphPositions->fX, rcIcu );
mpIcuLE->reset(); // TODO: get rid of this, PROBLEM: crash at exit when removed
if( LE_FAILURE(rcIcu) )
return false;
......
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