summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiang Jiang <jiang.jiang@nokia.com>2011-07-19 12:55:30 (GMT)
committerJiang Jiang <jiang.jiang@nokia.com>2011-07-19 13:00:57 (GMT)
commitb683aaa27430ced087b4230e031f56c3100f8068 (patch)
treebf9a0af7516c0a71f516017da07c3aac72095fc4
parentdb17ebe4510371b3b007c3852f2d1110abefbdda (diff)
downloadQt-b683aaa27430ced087b4230e031f56c3100f8068.zip
Qt-b683aaa27430ced087b4230e031f56c3100f8068.tar.gz
Qt-b683aaa27430ced087b4230e031f56c3100f8068.tar.bz2
Move separator skipping to proper place
So that it won't crash some places that requires shaping results. Reviewed-by: TrustMe
-rw-r--r--src/gui/text/qtextengine.cpp6
-rw-r--r--src/gui/text/qtextengine_mac.cpp7
2 files changed, 7 insertions, 6 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index dd93cae..d92c418 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -897,12 +897,6 @@ void QTextEngine::shapeText(int item) const
if (si.num_glyphs)
return;
- // Skip shaping of line or paragraph separators since we are not
- // going to draw them anyway
- if (si.analysis.flags == QScriptAnalysis::LineOrParagraphSeparator
- && !(option.flags() & QTextOption::ShowLineAndParagraphSeparators))
- return;
-
#if defined(Q_WS_MAC)
#if !defined(QT_ENABLE_HARFBUZZ_FOR_MAC)
if (enableHarfBuzz()) {
diff --git a/src/gui/text/qtextengine_mac.cpp b/src/gui/text/qtextengine_mac.cpp
index 251d9b5..9da8f03 100644
--- a/src/gui/text/qtextengine_mac.cpp
+++ b/src/gui/text/qtextengine_mac.cpp
@@ -605,6 +605,12 @@ void QTextEngine::shapeTextMac(int item) const
unsigned short *log_clusters = logClusters(&si);
bool stringToCMapFailed = false;
+ // Skip shaping of line or paragraph separators since we are not
+ // going to draw them anyway
+ if (si.analysis.flags == QScriptAnalysis::LineOrParagraphSeparator
+ && !(option.flags() & QTextOption::ShowLineAndParagraphSeparators))
+ goto cleanUp;
+
if (!fe->stringToCMap(str, len, &g, &num_glyphs, flags, log_clusters, attributes(), &si)) {
ensureSpace(num_glyphs);
g = availableGlyphs(&si);
@@ -645,6 +651,7 @@ void QTextEngine::shapeTextMac(int item) const
}
}
+cleanUp:
const ushort *uc = reinterpret_cast<const ushort *>(str);
if ((si.analysis.flags == QScriptAnalysis::SmallCaps || si.analysis.flags == QScriptAnalysis::Uppercase