From 93e69ca433401c0224edc1d23462c3ff2051a82b Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Fri, 17 Apr 2015 01:20:27 +0200 Subject: Do not handle tokens if the current handler is not valid. Fixes crash bug in added integration test. --- src/core/parser/stack/Stack.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/core/parser') diff --git a/src/core/parser/stack/Stack.cpp b/src/core/parser/stack/Stack.cpp index 2ad5c8b..2acea32 100644 --- a/src/core/parser/stack/Stack.cpp +++ b/src/core/parser/stack/Stack.cpp @@ -692,7 +692,7 @@ ssize_t StackImpl::pendingCloseTokenHandlerIdx(TokenId token) const TokenSet StackImpl::currentTokens() const { TokenSet res; - if (currentInfo().state().supportsTokens) { + if (currentInfo().valid && currentInfo().state().supportsTokens) { res = tokenStack.tokens(); ssize_t idx = pendingCloseTokenHandlerIdx(); if (idx >= 0) { @@ -1111,6 +1111,12 @@ bool StackImpl::handleOpenTokens(Logger &logger, const Token &token, void StackImpl::handleToken(const Token &token) { + // If the current handler is not valid, just ignore the token + // TODO: Unify the handling of invalid elements across this class + if (!handlersValid()) { + return; + } + // If the token matches one from the "pendingCloseTokens" list, then just // end the corresponding handler const ssize_t pendingCloseIndex = pendingCloseTokenHandlerIdx(token.id); -- cgit v1.2.3