Skip to content

Commit e4f92f6

Browse files
Fix #10837 crash/hang in expandTemplate (#5410)
1 parent 48a7a43 commit e4f92f6

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

lib/templatesimplifier.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ unsigned int TemplateSimplifier::templateParameters(const Token *tok)
499499
return 0;
500500

501501
// num/type ..
502-
if (!tok->isNumber() && tok->tokType() != Token::eChar && !tok->isName() && !tok->isOp())
502+
if (!tok->isNumber() && tok->tokType() != Token::eChar && tok->tokType() != Token::eString && !tok->isName() && !tok->isOp())
503503
return 0;
504504
tok = tok->next();
505505
if (!tok)

test/testsimplifytemplate.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5319,6 +5319,7 @@ class TestSimplifyTemplate : public TestFixture {
53195319
ASSERT_EQUALS(3U, templateParameters("template <class T, class... Args, class Tup = std::tuple<Args*...>> void f() {}"));
53205320
ASSERT_EQUALS(1U, templateParameters("S<4 < sizeof(uintptr_t)> x;"));
53215321
ASSERT_EQUALS(2U, templateParameters("template <typename... Ts, typename = std::enable_if_t<std::is_same<Ts..., int>::value>> void g() {}")); // #11915
5322+
ASSERT_EQUALS(1U, templateParameters("S<N::M<O<\"A\"_I>>> s;")); // #10837
53225323
}
53235324

53245325
// Helper function to unit test TemplateSimplifier::getTemplateNamePosition

0 commit comments

Comments
 (0)