Difference between revisions of "ICU/bugs and patches"

From Apache OpenOffice Wiki
< ICU
Jump to: navigation, search
(Problem with collator image rule for certain Unicode ranges: it turned out that this actually wasn't a bug)
(prevent unaligned memory accesses into font files)
Line 13: Line 13:
  
  
== don't access unaligned memory for rotten fonts ==
+
== prevent unaligned memory accesss ==
  
The title says it all.. some processor architectures don't allow unaligned memory access, but some rotten fonts don't care and in their header fields tell you to do so. Of course these TrueType fonts do work on Windows/x86 (not being one of those architectures), but people complained about crashes on other platforms, e.g. Solaris/SPARC, where they copied their fonts to.
+
Some processor architectures don't allow unaligned memory access and segfault when a library does them. This crashes an application like OpenOffice, which uses libraries that haven*t been fixed yet. Font files are allowed to have some unaligned fields. Of course these TrueType fonts do work on Windows/x86 (not being one of those architectures), but people complained about crashes on other platforms, e.g. Solaris/SPARC, where they copied their fonts to. Since OpenOffice defaults to enable the font preview feature these crashes are very easy to trigger just by scrolling through the list of available fonts, if just one of the fonts has an unaligned data field.
  
 
ICU trac: http://bugs.icu-project.org/trac/ticket/6083
 
ICU trac: http://bugs.icu-project.org/trac/ticket/6083
  
 
OOo patch developer: Herbert Duerr <hdu>
 
OOo patch developer: Herbert Duerr <hdu>
 
+
The patch is just a workaround for the library problem. It is designed to be minimally invasive against the third party code base, so it can easily stay in sync with the rapidly evolving library. If ICU accepts the idea that unaligned memory accesses need to  be avoided in the mainstream codebase too, then a better and cleaner approach is to wrap accesses into font files by small helper functions.
  
 
== compile warning free ==
 
== compile warning free ==

Revision as of 09:00, 12 January 2008

List of patches applied to OOo's ICU module and bugs and patches submitted to ICU trac, the ICU bug tracking system.

If you really have to apply a patch to ICU to make things work, please submit that patch to ICU trac, so the next version of ICU will include the changes, and list your patch with ICU trac ID here. We strive for being able to build against an unpatched ICU, so that configure --with-system-icu will be possible without loosing functionality.


make RuleBasedBreakIterator::setBreakType() public

Using a locally constructed rule based line breakiterator may let ICU loop forever because of a missing fBreakType value. The patch is more a workaround, needing a proper solution.

ICU trac: http://bugs.icu-project.org/trac/ticket/5498 (submitted as http://bugs.icu-project.org/trac/ticket/6012 that got closed as a duplicate).

OOo patch developer: Karl Hong <khong>


prevent unaligned memory accesss

Some processor architectures don't allow unaligned memory access and segfault when a library does them. This crashes an application like OpenOffice, which uses libraries that haven*t been fixed yet. Font files are allowed to have some unaligned fields. Of course these TrueType fonts do work on Windows/x86 (not being one of those architectures), but people complained about crashes on other platforms, e.g. Solaris/SPARC, where they copied their fonts to. Since OpenOffice defaults to enable the font preview feature these crashes are very easy to trigger just by scrolling through the list of available fonts, if just one of the fonts has an unaligned data field.

ICU trac: http://bugs.icu-project.org/trac/ticket/6083

OOo patch developer: Herbert Duerr <hdu> The patch is just a workaround for the library problem. It is designed to be minimally invasive against the third party code base, so it can easily stay in sync with the rapidly evolving library. If ICU accepts the idea that unaligned memory accesses need to be avoided in the mainstream codebase too, then a better and cleaner approach is to wrap accesses into font files by small helper functions.

compile warning free

OOo build treats warnings as errors, so ICU header files included may break the build. Some are wrapped in a second include file using a compiler dependent #pragma ..., some are patched directly, depends on who encountered the problem.

ICU trac: http://bugs.icu-project.org/trac/ticket/6090

OOo patch developer: Caolan McNamara <cmc>


MinGW platform

Several patches to be able to build and use ICU on the Minimalist GNU for Windows platform.

TODO: gather who did all the work

TODO: make them file an ICU patch ;-)


Indic rendering

Several changes related to Indic rendering in ICU 3.8 were back-ported to OOo's ICU 3.6, see issue 72791

OOo patch developer: Herbert Duerr <hdu>


add RPATH for URE

The patch changes RPATH from $ORIGIN to $ORIGIN:$ORIGIN/../ure-link/lib because libicu*.so are linked against libstdc++.so.6 and libgcc_s.so.1 that are distributed with the new layered UNO Runtime Environment (URE). This to ensure that the libraries are found there in case they are not already loaded.

However, one could argue that the libraries are already loaded when ICU is pulled in, which almost certainly is the case for libstdc++, and probably also for the libgcc_s GCC support library, but that for some machine models may contain some rarely used symbols such that it wasn't loaded but ICU needs it. This is very unlikely though, but you never know..

Anyway, the patch certainly is nothing to upstream, hence no ICU trac ID.

We'll keep thinking about another solution.

OOo developer: Stephan Bergmann <sb>

Personal tools