Fix off-by-one error in binary search
authorJiang Jiang <jiang.jiang@nokia.com>
Thu, 28 Jul 2011 12:51:54 +0000 (14:51 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 29 Jul 2011 06:12:12 +0000 (08:12 +0200)
This one-line change makes the binary search in QTextEngine::findItem
behave consistently with the linear search that it replaced in commit
acf678e57ed088f3e56a551cac6c7c3322005750. The new behavior seems to
cause crashes in kword (and perhaps other applications) by triggering a
logClusters assert, although I have been unable to create a unit test
that reproduces this.

Task-number: QTBUG-17209
Done-by: Dr. Robert Marmorstein <robert@narnia.homeunix.com>
Change-Id: I68b79f024e9836e1cc8b0f3514889120541eb2ea
Reviewed-on: http://codereview.qt.nokia.com/2343
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
src/gui/text/qtextengine.cpp

index 41ea56a..cca30e6 100644 (file)
@@ -1632,7 +1632,7 @@ bool QTextEngine::isRightToLeft() const
 int QTextEngine::findItem(int strPos) const
 {
     itemize();
-    int left = 0;
+    int left = 1;
     int right = layoutData->items.size()-1;
     while(left <= right) {
         int middle = ((right-left)/2)+left;