Ticket #7270 segmentation fault (invalid code) in Tokenizer::simplifyLabelsCaseDefault. include fix for cygwin

This commit is contained in:
amai2012 2016-01-08 11:59:02 +01:00
parent 7cb27d91c4
commit bd2892fde4
3 changed files with 9 additions and 0 deletions

View File

@ -2309,6 +2309,8 @@ void Tokenizer::simplifyLabelsCaseDefault()
break; break;
if (tok->str() != "case" && tok->next() && tok->next()->str() == ":") { if (tok->str() != "case" && tok->next() && tok->next()->str() == ":") {
tok = tok->next(); tok = tok->next();
if (!tok->next())
syntaxError(tok); // #7270 invalid code
if (tok->next()->str() != ";" && tok->next()->str() != "case") if (tok->next()->str() != ";" && tok->next()->str() != "case")
tok->insertToken(";"); tok->insertToken(";");
else else

View File

@ -219,6 +219,7 @@ private:
TEST_CASE(garbageCode168); // #7246 TEST_CASE(garbageCode168); // #7246
TEST_CASE(garbageCode169); // #6731 TEST_CASE(garbageCode169); // #6731
TEST_CASE(garbageCode170); TEST_CASE(garbageCode170);
TEST_CASE(garbageCode171);
TEST_CASE(garbageValueFlow); TEST_CASE(garbageValueFlow);
TEST_CASE(garbageSymbolDatabase); TEST_CASE(garbageSymbolDatabase);
TEST_CASE(garbageAST); TEST_CASE(garbageAST);
@ -1441,6 +1442,11 @@ private:
// 7255 // 7255
checkCode("d i(){{f*s=typeid(()0,)}}", false); checkCode("d i(){{f*s=typeid(()0,)}}", false);
} }
void garbageCode171() {
// 7270
ASSERT_THROW(checkCode("(){case()?():}:", false), InternalError);
}
}; };

View File

@ -20,6 +20,7 @@
#include "options.h" #include "options.h"
#include "redirect.h" #include "redirect.h"
#include <cstdio>
#include <iostream> #include <iostream>
#include <list> #include <list>