Index: WebCore/platform/text/BidiResolver.h |
=================================================================== |
--- WebCore/platform/text/BidiResolver.h (revision 51011) |
+++ WebCore/platform/text/BidiResolver.h (working copy) |
@@ -806,35 +806,33 @@ |
break; |
} |
- if (pastEnd) { |
- if (eor == current) { |
- if (!reachedEndOfLine) { |
- eor = endOfLine; |
- switch (m_status.eor) { |
- case LeftToRight: |
- case RightToLeft: |
- case ArabicNumber: |
- m_direction = m_status.eor; |
- break; |
- case EuropeanNumber: |
- m_direction = m_status.lastStrong == LeftToRight ? LeftToRight : EuropeanNumber; |
- break; |
- default: |
- ASSERT(false); |
- } |
- appendRun(); |
+ if (pastEnd && eor == current) { |
+ if (!reachedEndOfLine) { |
+ eor = endOfLine; |
+ switch (m_status.eor) { |
+ case LeftToRight: |
+ case RightToLeft: |
+ case ArabicNumber: |
+ m_direction = m_status.eor; |
+ break; |
+ case EuropeanNumber: |
+ m_direction = m_status.lastStrong == LeftToRight ? LeftToRight : EuropeanNumber; |
+ break; |
+ default: |
+ ASSERT(false); |
} |
- current = end; |
- m_status = stateAtEnd.m_status; |
- sor = stateAtEnd.sor; |
- eor = stateAtEnd.eor; |
- last = stateAtEnd.last; |
- reachedEndOfLine = stateAtEnd.reachedEndOfLine; |
- lastBeforeET = stateAtEnd.lastBeforeET; |
- emptyRun = stateAtEnd.emptyRun; |
- m_direction = OtherNeutral; |
- break; |
+ appendRun(); |
} |
+ current = end; |
+ m_status = stateAtEnd.m_status; |
+ sor = stateAtEnd.sor; |
+ eor = stateAtEnd.eor; |
+ last = stateAtEnd.last; |
+ reachedEndOfLine = stateAtEnd.reachedEndOfLine; |
+ lastBeforeET = stateAtEnd.lastBeforeET; |
+ emptyRun = stateAtEnd.emptyRun; |
+ m_direction = OtherNeutral; |
+ break; |
} |
// set m_status.last as needed. |
@@ -887,8 +885,21 @@ |
} |
increment(); |
- if (!m_currentExplicitEmbeddingSequence.isEmpty()) |
+ if (!m_currentExplicitEmbeddingSequence.isEmpty()) { |
commitExplicitEmbedding(); |
+ if (pastEnd) { |
+ current = end; |
+ m_status = stateAtEnd.m_status; |
+ sor = stateAtEnd.sor; |
+ eor = stateAtEnd.eor; |
+ last = stateAtEnd.last; |
+ reachedEndOfLine = stateAtEnd.reachedEndOfLine; |
+ lastBeforeET = stateAtEnd.lastBeforeET; |
+ emptyRun = stateAtEnd.emptyRun; |
+ m_direction = OtherNeutral; |
+ break; |
+ } |
+ } |
if (emptyRun && (dirCurrent == RightToLeftEmbedding |
|| dirCurrent == LeftToRightEmbedding |