From 582a082cd7fa0d582dfd4984f5bff8588e5f28a3 Mon Sep 17 00:00:00 2001
From: Eike Ziller <eike.ziller@nokia.com>
Date: Thu, 2 Aug 2012 11:52:28 +0200
Subject: [PATCH] Generic Highlighter: Don't crash with bogus #pop directives.

Task-number: QTCREATORBUG-7583

Change-Id: Ie11c0c1d9b900c5d5d92c0e856bae762bb90cb4a
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
---
 src/plugins/texteditor/generichighlighter/highlighter.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/plugins/texteditor/generichighlighter/highlighter.cpp b/src/plugins/texteditor/generichighlighter/highlighter.cpp
index e7510200416..587b49665b2 100644
--- a/src/plugins/texteditor/generichighlighter/highlighter.cpp
+++ b/src/plugins/texteditor/generichighlighter/highlighter.cpp
@@ -323,8 +323,11 @@ void Highlighter::changeContext(const QString &contextName,
 {
     if (contextName.startsWith(kPop)) {
         QStringList list = contextName.split(kHash, QString::SkipEmptyParts);
-        for (int i = 0; i < list.size(); ++i)
+        for (int i = 0; i < list.size(); ++i) {
+            if (m_contexts.isEmpty())
+                throw HighlighterException();
             m_contexts.pop_back();
+        }
 
         if (extractObservableState(currentBlockState()) >= PersistentsStart) {
             // One or more contexts were popped during during a persistent state.
-- 
GitLab