Ticket #7270 segmentation fault (invalid code) in Tokenizer::simplifyLabelsCaseDefault. include fix for cygwin
This commit is contained in:
parent
7cb27d91c4
commit
bd2892fde4
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue