Restore assert when GetCharacterInfo is called on an empty edit.

CFWL_Edit::UpdateCursorRect now checks if the edit is empty before
getting the caret position.

Bug: chromium:592750
Change-Id: I792e90537741a78141fa084a646380bfe7ce4637
Reviewed-on: https://pdfium-review.googlesource.com/25910
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/xfa/fde/cfde_texteditengine.cpp b/xfa/fde/cfde_texteditengine.cpp
index 75fd103..d085a8d 100644
--- a/xfa/fde/cfde_texteditengine.cpp
+++ b/xfa/fde/cfde_texteditengine.cpp
@@ -1071,8 +1071,10 @@
     if (it->nStart <= start_idx && start_idx < it->nStart + it->nCount)
       break;
   }
-  if (it == text_piece_info_.end())
+  if (it == text_piece_info_.end()) {
+    NOTREACHED();
     return {0, CFX_RectF()};
+  }
 
   return {it->nBidiLevel, GetCharRects(*it)[start_idx - it->nStart]};
 }
diff --git a/xfa/fwl/cfwl_edit.cpp b/xfa/fwl/cfwl_edit.cpp
index 051c39f..b98278c 100644
--- a/xfa/fwl/cfwl_edit.cpp
+++ b/xfa/fwl/cfwl_edit.cpp
@@ -1075,10 +1075,15 @@
 }
 
 void CFWL_Edit::UpdateCursorRect() {
-  int32_t bidi_level = 0;
-  m_rtCaret = CFX_RectF();
-  std::tie(bidi_level, m_rtCaret) =
-      m_EdtEngine.GetCharacterInfo(m_CursorPosition);
+  int32_t bidi_level;
+  if (m_EdtEngine.GetLength() > 0) {
+    std::tie(bidi_level, m_rtCaret) =
+        m_EdtEngine.GetCharacterInfo(m_CursorPosition);
+  } else {
+    bidi_level = 0;
+    m_rtCaret = CFX_RectF();
+  }
+
   // TODO(dsinclair): This should handle bidi level  ...
 
   m_rtCaret.width = 1.0f;