Fix a crash in cursorToX() when new block is added
authorJiang Jiang <jiang.jiang@nokia.com>
Mon, 2 Apr 2012 10:32:05 +0000 (12:32 +0200)
committerQt by Nokia <qt-info@nokia.com>
Mon, 2 Apr 2012 12:52:48 +0000 (14:52 +0200)
When an empty new block is being added, the layoutData->memory data
will be 0, thus QTextEngine::attributes() will return 0. We should
only access the attributes pointer when some text actually exist.

Task-number: QTBUG-24718
(cherry picked from commit cac12f4592477d99ef6fffaad40345bf85ef53b5)

Change-Id: I203b283dd28653d4b57ba8bfffb259c773f67f19
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
src/gui/text/qtextlayout.cpp

index ac91ed0..d7f8130 100644 (file)
@@ -2587,6 +2587,10 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const
     int pos = *cursorPos;
     int itm;
     const HB_CharAttributes *attributes = eng->attributes();
+    if (!attributes) {
+        *cursorPos = 0;
+        return x.toReal();
+    }
     while (pos < line.from + line.length && !attributes[pos].charStop)
         pos++;
     if (pos == line.from + (int)line.length) {