Kaydet (Commit) 31e0d0c5 authored tarafından Petr Mladek's avatar Petr Mladek

Revert "Fix graphite2 particulary for LinLibertineG"

caused many build problems on Windows; too late to do this change

This reverts commit 1dbaab9692545a9c8c032a886932a7626e48dbe9.
üst 91a8d7bf
--- misc/silgraphite-2.3.1/engine/src/segment/SegmentAux.cpp 2008-08-21 16:24:32.000000000 +0200
+++ misc/build/silgraphite-2.3.1/engine/src/segment/SegmentAux.cpp 2011-02-21 13:22:23.159834368 +0100
@@ -247,7 +247,9 @@
GlyphSetIterator::reference GlyphSetIterator::operator*() const
{
assert(m_pseg != 0);
- assert(m_vit != std::vector<int>::const_iterator());
+ // #i116227# the check below is well meant but breaks itself when using stlport with debug facilities
+ // a valid iterator cannot be compared to an empty one in that case
+ // assert(m_vit != std::vector<int>::const_iterator());
// in the case of a non-contiguous list
return m_pseg->m_prgginf[(*m_vit) - m_pseg->m_isloutGinf0];
}
This diff is collapsed.
diff -r b3a86877ec68 src/Pass.cpp
--- misc/build/graphite2-0.9.4/src/Pass.cpp Wed May 11 09:34:52 2011 +0700
+++ misc/build/graphite2-0.9.4/src/Pass.cpp Mon May 16 14:23:58 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.4/src/Rule.h Wed May 11 09:34:52 2011 +0700
+++ misc/build/graphite2-0.9.4/src/Rule.h Mon May 16 14:23:58 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;
}
diff -r b3a86877ec68 src/opcodes.h
--- misc/build/graphite2-0.9.4/src/opcodes.h Wed May 11 09:34:52 2011 +0700
+++ misc/build/graphite2-0.9.4/src/opcodes.h Mon May 16 14:23:58 2011 +0700
@@ -274,6 +274,7 @@
{
seg.last()->next(newSlot);
newSlot->prev(seg.last());
+ newSlot->before(seg.last()->before());
seg.last(newSlot);
}
else
@@ -286,10 +287,12 @@
{
iss->prev()->next(newSlot);
newSlot->prev(iss->prev());
+ newSlot->before(iss->prev()->after());
}
else
{
newSlot->prev(NULL);
+ newSlot->before(iss->before());
seg.first(newSlot);
}
newSlot->next(iss);
@@ -297,10 +300,12 @@
{
iss->prev(newSlot);
newSlot->originate(iss->original());
+ newSlot->after(iss->before());
}
else if (newSlot->prev())
{
newSlot->originate(newSlot->prev()->original());
+ newSlot->after(newSlot->prev()->after());
}
else
{
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment