Verified Commit 8e4070f1 authored by James Teh's avatar James Teh Committed by ma1
Browse files

Bug 2027308: Fix handling of empty text leaves. a=dmeehan

parent 444c50fe
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -337,6 +337,7 @@ class PrevWordBreakClassWalker {
      if (!PrevChar()) {
        return Nothing();
      }
      MOZ_ASSERT(mOffset >= 0);
      WordBreakClass curClass = GetWordBreakClass(mText.CharAt(mOffset));
      if (curClass != mClass) {
        mClass = curClass;
@@ -352,6 +353,7 @@ class PrevWordBreakClassWalker {
      // There are no characters before us.
      return true;
    }
    MOZ_ASSERT(mOffset >= 0);
    WordBreakClass curClass = GetWordBreakClass(mText.CharAt(mOffset));
    // We wanted to peek at the previous character, not really move to it.
    ++mOffset;
@@ -368,15 +370,20 @@ class PrevWordBreakClassWalker {
      // PrevChar was called already and failed.
      return false;
    }
    // Walk backward through leaves, skipping any that are empty.
    for (;;) {
      mAcc = PrevLeaf(mAcc);
      if (!mAcc) {
        return false;
      }
      mText.Truncate();
      mAcc->AppendTextTo(mText);
      if (!mText.IsEmpty()) {
        mOffset = static_cast<int32_t>(mText.Length()) - 1;
        return true;
      }
    }
  }

  Accessible* mAcc;
  nsAutoString mText;