diff --git a/src/plugins/qtscripteditor/parser/javascriptparser.cpp b/src/plugins/qtscripteditor/parser/javascriptparser.cpp
index 295969a11d819c08f9c84c51d59e5a4b2cde6a6e..8931d0f85045778cd4ef5bccecd4abe30bc47bac 100644
--- a/src/plugins/qtscripteditor/parser/javascriptparser.cpp
+++ b/src/plugins/qtscripteditor/parser/javascriptparser.cpp
@@ -1180,10 +1180,12 @@ case 266: {
         }
 
         QString msg = QString::fromUtf8("Unexpected token");
-        if (const char *tokenSpell = spell[token_buffer[0].token]) {
-            msg += QLatin1String(": `");
-            msg += QLatin1String(tokenSpell);
-            msg += QLatin1Char('\'');
+        if (token_buffer[0].token >= 0 && token_buffer[0].token < TERMINAL_COUNT) { // ### FIXME: band-aid, see QTCREATORBUG-509.
+            if (const char *tokenSpell = spell[token_buffer[0].token]) {
+                msg += QLatin1String(": `");
+                msg += QLatin1String(tokenSpell);
+                msg += QLatin1Char('\'');
+            }
         }
 
         diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error,