When changes were made to ICU in OpenJDK 6 & IcedTea 2.x for the July 2013 security update, they had to be modified from the original Oracle patches as best as possible, so that the result would build. After the security patches were published in OpenJDK 7 by Oracle, they included an additional change "8008249: Sync ICU into JDK", which rebased the ICU used in OpenJDK 7 and explains the issues we found in applying 8001031 and 8009530 without this change being in place first.
Although IcedTea 2.x received 8008249 from upstream OpenJDK 7, OpenJDK 6 did not. This led to the recent discovery of a bug in OpenJDK 6's font processing, where it will throw an ArrayIndexOutOfBoundsException if certain combinations of glyphs are used in a font which is marked with the 'no canonical processing' feature flag. OpenJDK 6, at present, does not honour this flag and so still attempts to perform canonical processing with such fonts. This webrev synchronises LETypes.h with the version in OpenJDK 7, so that all the feature flags are now defined, and brings across the check of LE_NoCanon_FEATURE_FLAG from OpenJDK 7 to LayoutEngine.cpp in OpenJDK 6. Some differences remain in the latter file, but these refer to entirely new files in the updated ICU. Rather than risk instability by bringing across the new version of ICU in its entirety, we bring across just the needed changes. Hence, why this bug is filed under an OpenJDK 6 identifier rather than claiming to be a backport of 8008249. Most of the changes in LETypes.h are rearrangement; the code already exists in OpenJDK 6 but placement is slightly different due to how it was added on an as-needed basis to please 8001031 and 8009530. With these changes, OpenJDK 6 behaves in the same way as OpenJDK 7, and doesn't throw an ArrayIndexOutOfBoundsException. http://cr.openjdk.java.net/~andrew/openjdk6/oj6-39/webrev.01/ Ok to push? -- Andrew :) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) PGP Key: 248BDC07 (https://keys.indymedia.org/) Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07