summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qtextboundaryfinder.cpp
diff options
context:
space:
mode:
authorLorn Potter <lopotter@ljp-linux-vm.localdomain>2010-06-17 04:11:33 (GMT)
committerLorn Potter <lopotter@ljp-linux-vm.localdomain>2010-06-17 04:11:33 (GMT)
commit8335adf60299b728c0bf7a346a5afd94a3d56712 (patch)
treea8057969ac369ddffec9fa2b92e10cdf1fc319eb /src/corelib/tools/qtextboundaryfinder.cpp
parent0948de26bca9a68a354b436895bdf9e2db9c4288 (diff)
parent30c8d1e3dccc83499ac3d76284cfb2e8d860808a (diff)
downloadQt-8335adf60299b728c0bf7a346a5afd94a3d56712.zip
Qt-8335adf60299b728c0bf7a346a5afd94a3d56712.tar.gz
Qt-8335adf60299b728c0bf7a346a5afd94a3d56712.tar.bz2
Merge branch '4.7' of git://gitorious.org/qt/qt into 4.7
Diffstat (limited to 'src/corelib/tools/qtextboundaryfinder.cpp')
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp
index 9205297..bcddcb2 100644
--- a/src/corelib/tools/qtextboundaryfinder.cpp
+++ b/src/corelib/tools/qtextboundaryfinder.cpp
@@ -131,6 +131,11 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int
Line break boundaries give possible places where a line break
might happen and sentence boundaries will show the beginning and
end of whole sentences.
+
+ The first position in a string is always a valid boundary and
+ refers to the position before the first character. The last
+ position at the length of the string is also valid and refers
+ to the position after the last character.
*/
/*!
@@ -363,7 +368,8 @@ int QTextBoundaryFinder::toNextBoundary()
++pos;
break;
case Line:
- while (pos < length && d->attributes[pos].lineBreakType < HB_Break)
+ Q_ASSERT(pos);
+ while (pos < length && d->attributes[pos-1].lineBreakType < HB_Break)
++pos;
break;
}
@@ -405,7 +411,7 @@ int QTextBoundaryFinder::toPreviousBoundary()
--pos;
break;
case Line:
- while (pos > 0 && d->attributes[pos].lineBreakType < HB_Break)
+ while (pos > 0 && d->attributes[pos-1].lineBreakType < HB_Break)
--pos;
break;
}
@@ -430,7 +436,7 @@ bool QTextBoundaryFinder::isAtBoundary() const
case Word:
return d->attributes[pos].wordBoundary;
case Line:
- return d->attributes[pos].lineBreakType >= HB_Break;
+ return (pos > 0) ? d->attributes[pos-1].lineBreakType >= HB_Break : true;
case Sentence:
return d->attributes[pos].sentenceBoundary;
}