You probably should update the info on your website, since the freenode channel is dead.
Cppcheck (version 2.5) got stuck in an infinite loop when parsing a template alias. Or at least it has been running for an hour. I've managed to condense the code into the following snippet:
I tried to figure out what's gone wrong, but it is hard without diving deeper into the code which I don't have time for. I hope this information is helpful:
I inserted a breakpoint at the line
Token*tok2=tok->next()->findClosingBracket();
And it seems it keeps adding same token over and over, when printing tok2->mPrevious->mPrevious, tok2->mPrevious->mPrevious->mPrevious->mPrevious etc, all point to the token "remove_cvref_t". All of these have diffrent addresses, so it is not a cyclic reference.
mTemplateInstantiations kept growing and growing, after a while there were 13640 instantiations of mystd :: remove_cvref_t
Last edit: Haddayn 2021-09-22
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You probably should update the info on your website, since the freenode channel is dead.
Cppcheck (version 2.5) got stuck in an infinite loop when parsing a template alias. Or at least it has been running for an hour. I've managed to condense the code into the following snippet:
The code above was extracted from a full-fledged std::any implementation.
Cppcheck gets stuck in:
Last edit: Haddayn 2021-09-22
We have tried to change.. can you specify where you see the freenode link.
On the trac page https://trac.cppcheck.net/
I tried to figure out what's gone wrong, but it is hard without diving deeper into the code which I don't have time for. I hope this information is helpful:
I inserted a breakpoint at the line
And it seems it keeps adding same token over and over, when printing tok2->mPrevious->mPrevious, tok2->mPrevious->mPrevious->mPrevious->mPrevious etc, all point to the token "remove_cvref_t". All of these have diffrent addresses, so it is not a cyclic reference.
mTemplateInstantiations kept growing and growing, after a while there were 13640 instantiations of mystd :: remove_cvref_t
Last edit: Haddayn 2021-09-22
Managed to reduce it even further:
Changing anything at this point breaks the infinite loop.
Thank you! I have created ticket https://trac.cppcheck.net/ticket/10506
The following also infinite loops, maybe useful as a second test case.