From 09c1548dfc4628f86898818dbb7c032b278c91d5 Mon Sep 17 00:00:00 2001 From: "evan@chromium.org" Date: Tue, 20 Oct 2009 18:55:48 +0000 Subject: linux: merge newer upstream harfbuzz This merges includes the following changes. The changes by Adam Langley were previously in our tree while they were being upstreamed, but since that's now happened I've removed the changes mentioned in README.google. Adam Langley (3): Add contrib/ and initial file set Add fuzz testing tool. Make HB_ShaperItem a typedef to a named struct. Behdad Esfahbod (4): Fix typo in unused code Bug 23973 memory leak in _HB_OPEN_Load_EmptyClassDefinition Bug 23976 memory leak in Free_BaseArray Bug 24540 arabicSyriacOpenTypeShape causes read past end of string in getArabicProperties Graham Asher (1): Improved comments for HB_ShaperItem fields. BUG=20621 (But it doesn't look like this fixes it, though -- the getArabicProperties change mentioned in the diff was already available locally) Review URL: http://codereview.chromium.org/295025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29544 0039d316-1c4b-4281-b951-d872f2087c98 --- third_party/harfbuzz/chromium.patch | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 third_party/harfbuzz/chromium.patch (limited to 'third_party/harfbuzz/chromium.patch') diff --git a/third_party/harfbuzz/chromium.patch b/third_party/harfbuzz/chromium.patch new file mode 100644 index 0000000..3e26566 --- /dev/null +++ b/third_party/harfbuzz/chromium.patch @@ -0,0 +1,69 @@ +diff --git a/third_party/harfbuzz/contrib/harfbuzz-unicode.c b/third_party/harfbuzz/contrib/harfbuzz-unicode.c +index 9b3c43e..51dd4ea 100644 +--- a/third_party/harfbuzz/contrib/harfbuzz-unicode.c ++++ b/third_party/harfbuzz/contrib/harfbuzz-unicode.c +@@ -6,8 +6,9 @@ + #include + #include "harfbuzz-unicode.h" + +-#include "tables/script-properties.h" + #include "tables/grapheme-break-properties.h" ++#include "tables/mirroring-properties.h" ++#include "tables/script-properties.h" + + uint32_t + utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter) { +@@ -234,10 +235,30 @@ HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *gclass, HB_Line + *breakclass = HB_GetLineBreakClass(ch); + } + ++static int ++mirroring_property_cmp(const void *vkey, const void *vcandidate) { ++ const uint32_t key = (uint32_t) (intptr_t) vkey; ++ const struct mirroring_property *candidate = vcandidate; ++ ++ if (key < candidate->a) { ++ return -1; ++ } else if (key > candidate->a) { ++ return 1; ++ } else { ++ return 0; ++ } ++} ++ + HB_UChar16 + HB_GetMirroredChar(HB_UChar16 ch) { +- abort(); +- return 0; ++ const void *mprop = bsearch((void *) (intptr_t) ch, mirroring_properties, ++ mirroring_properties_count, ++ sizeof(struct mirroring_property), ++ mirroring_property_cmp); ++ if (!mprop) ++ return ch; ++ ++ return ((const struct mirroring_property *) mprop)->b; + } + + void * +diff --git a/third_party/harfbuzz/src/harfbuzz-shaper.cpp b/third_party/harfbuzz/src/harfbuzz-shaper.cpp +index 36b9282..3628c88 100644 +--- a/third_party/harfbuzz/src/harfbuzz-shaper.cpp ++++ b/third_party/harfbuzz/src/harfbuzz-shaper.cpp +@@ -433,7 +433,7 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item) + + // ### zeroWidth and justification are missing here!!!!! + +- assert(item->num_glyphs <= length); ++ assert(length <= item->num_glyphs); + + // qDebug("QScriptEngine::heuristicSetGlyphAttributes, num_glyphs=%d", item->num_glyphs); + HB_GlyphAttributes *attributes = item->attributes; +@@ -451,7 +451,6 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item) + } + ++glyph_pos; + } +- assert(glyph_pos == item->num_glyphs); + + // first char in a run is never (treated as) a mark + int cStart = 0; -- cgit v1.1