ICU/bugs and patches

From Apache OpenOffice Wiki
Revision as of 08:57, 14 January 2008 by Hdu (Talk | contribs)

Jump to: navigation, search

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: (submitted as that got closed as a duplicate).

OOo patch developer: Karl Hong <khong>

prevent crashes caused by 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, when it uses libraries that haven't been fixed yet. ICU is one of these libraries and the problem happens when it accesses raw font data that is not aligned. Font files are allowed to have some unaligned data. 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 by scrolling through the list of available fonts, if just one of the fonts has an unaligned data field.

ICU trac:

The patch developed for ICU in OOo 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 raw accesses to unaligned memory 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.

OOo patch developer: Herbert Duerr <hdu>

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:

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 and 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