forked from qt-creator/qt-creator
C++: Fix preprocessor blocked macro bug.
By lexing the first token after a macro call (meaning: the token after the closing parenthesis (which was passed to handleFunctionLikeMacro which in turn pushed it back into the token buffer)), a token buffer might be popped, which unblocks the macro that generated the actual param pack. The effect was that if this happens in the expansion of a recursive macro (with parameters!), the preprocessor ended up in an infinite loop. Task-number: QTCREATORBUG-9015 Task-number: QTCREATORBUG-9447 Change-Id: I0d83c59188ec15c4a948970e9fa944a17d765475 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
committed by
Erik Verbruggen
parent
d0afdfcc2b
commit
271c3f45a4
6
tests/auto/cplusplus/preprocessor/data/recursive.2.cpp
Normal file
6
tests/auto/cplusplus/preprocessor/data/recursive.2.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
#define a(x) b(x) c(x)
|
||||
#define b(x) c(x) a(x)
|
||||
#define c(x) a(x) b(x)
|
||||
|
||||
b(1)
|
||||
a(1)
|
Reference in New Issue
Block a user