From 07ac036472426c07bc9c6e6b6f4e9850ce30d0dd Mon Sep 17 00:00:00 2001 From: "roc+%cs.cmu.edu" Date: Wed, 10 Mar 2010 00:00:56 +0000 Subject: [PATCH] Bug 546530. Bound search for previous cluster start. r=smontagu git-svn-id: svn://10.0.0.236/trunk@259934 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/generic/nsTextFrameThebes.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mozilla/layout/generic/nsTextFrameThebes.cpp b/mozilla/layout/generic/nsTextFrameThebes.cpp index 014a7a8cdbf..268ee52f5d3 100644 --- a/mozilla/layout/generic/nsTextFrameThebes.cpp +++ b/mozilla/layout/generic/nsTextFrameThebes.cpp @@ -2207,10 +2207,10 @@ PropertyProvider::ComputeJustifiableCharacters(PRInt32 aOffset, PRInt32 aLength) /** * Finds the offset of the first character of the cluster containing aPos */ -static void FindClusterStart(gfxTextRun* aTextRun, +static void FindClusterStart(gfxTextRun* aTextRun, PRInt32 aOriginalStart, gfxSkipCharsIterator* aPos) { - while (aPos->GetOriginalOffset() > 0) { + while (aPos->GetOriginalOffset() > aOriginalStart) { if (aPos->IsOriginalCharSkipped() || aTextRun->IsClusterStart(aPos->GetSkippedOffset())) { break; @@ -2326,7 +2326,7 @@ PropertyProvider::GetSpacingInternal(PRUint32 aStart, PRUint32 aLength, PRInt32 originalOffset = run.GetOriginalOffset() + i; if (IsJustifiableCharacter(mFrag, originalOffset, isCJK)) { iter.SetOriginalOffset(originalOffset); - FindClusterStart(mTextRun, &iter); + FindClusterStart(mTextRun, run.GetOriginalOffset(), &iter); PRUint32 clusterFirstChar = iter.GetSkippedOffset(); FindClusterEnd(mTextRun, run.GetOriginalOffset() + run.GetRunLength(), &iter); PRUint32 clusterLastChar = iter.GetSkippedOffset(); @@ -4615,7 +4615,7 @@ nsTextFrame::GetPointFromOffset(PRInt32 inOffset, !iter.IsOriginalCharSkipped() && !mTextRun->IsClusterStart(iter.GetSkippedOffset())) { NS_WARNING("GetPointFromOffset called for non-cluster boundary"); - FindClusterStart(mTextRun, &iter); + FindClusterStart(mTextRun, trimmedOffset, &iter); } gfxFloat advanceWidth =