diff options
Diffstat (limited to 'graphite')
-rw-r--r-- | graphite/graphite2-0.9.2.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/graphite/graphite2-0.9.2.patch b/graphite/graphite2-0.9.2.patch index aca8b63ea254..c6d796867e13 100644 --- a/graphite/graphite2-0.9.2.patch +++ b/graphite/graphite2-0.9.2.patch @@ -412,3 +412,52 @@ diff current src/List.h #define GR2_LOCAL #else #if __GNUC__ >= 4 +diff -r b3a86877ec68 src/Pass.cpp +--- misc/build/graphite2-0.9.2/src/Pass.cpp Wed May 11 09:34:52 2011 +0700 ++++ misc/build/graphite2-0.9.2/src/Pass.cpp Mon May 16 13:54:00 2011 +0700 +@@ -513,6 +513,7 @@ + bool Pass::testConstraint(const Rule &r, Machine & m) const + { + if (r.sort - r.preContext > (int)m.slotMap().size() - m.slotMap().context()) return false; ++ if (m.slotMap().context() - r.preContext < 0) return false; + if (!*r.constraint) return true; + assert(r.constraint->constraint()); + +@@ -527,6 +528,7 @@ + Machine::status_t status = Machine::finished; + for (int n = r.sort; n && map; --n, ++map) + { ++ if (!*map) continue; + const int32 ret = r.constraint->run(m, map, status); + if (!ret || status != Machine::finished) + { +diff -r b3a86877ec68 src/Rule.h +--- misc/build/graphite2-0.9.2/src/Rule.h Wed May 11 09:34:52 2011 +0700 ++++ misc/build/graphite2-0.9.2/src/Rule.h Mon May 16 13:54:00 2011 +0700 +@@ -187,8 +187,9 @@ + // Merge the new sorted rules list into the current sorted result set. + const RuleEntry * lre = begin(), * rre = state.rules; + RuleEntry * out = m_rules + (m_begin == m_rules)*MAX_RULES; ++ const RuleEntry * lrend = out + MAX_RULES; + m_begin = out; +- while (lre != end()) ++ while (lre != end() && out != lrend) + { + if (*lre < *rre) *out++ = *lre++; + else if (*rre < *lre) { *out++ = *rre++; } +@@ -196,12 +197,12 @@ + + if (rre == state.rules_end) + { +- while (lre != end()) { *out++ = *lre++; } ++ while (lre != end() && out != lrend) { *out++ = *lre++; } + m_end = out; + return; + } + } +- while (rre != state.rules_end) { *out++ = *rre++; } ++ while (rre != state.rules_end && out != lrend) { *out++ = *rre++; } + m_end = out; + } + + |