diff options
-rw-r--r-- | doc/changes.src | 3 | ||||
-rw-r--r-- | preproc.c | 12 |
2 files changed, 11 insertions, 4 deletions
diff --git a/doc/changes.src b/doc/changes.src index 340c85de..d9779afd 100644 --- a/doc/changes.src +++ b/doc/changes.src @@ -27,6 +27,9 @@ since 2007. \b The Windows installer now puts the NASM directory first in the \c{PATH} of the "NASM Shell". +\b Revert the early expansion behavior of \c{%+} to pre-2.06 behavior: + \c{%+} is only expanded late. + \S{cl-2.06} Version 2.06 @@ -3611,7 +3611,7 @@ static Token *expand_mmac_params(Token * tline) *tail = NULL; if (changed) - paste_tokens(&thead, true); + paste_tokens(&thead, false); return thead; } @@ -3638,7 +3638,7 @@ static Token *expand_smacro(Token * tline) Context *ctx; const char *mname; int deadman = DEADMAN_LIMIT; - bool expanded; + bool expanded, pasted; /* * Trick: we should avoid changing the start token pointer since it can @@ -3928,8 +3928,12 @@ again: * Also we look for %+ tokens and concatenate the tokens before and after * them (without white spaces in between). */ - if (expanded && paste_tokens(&thead, true)) { - /* If we concatenated something, re-scan the line for macros */ + pasted = paste_tokens(&thead, true); + if (expanded && pasted) { + /* + * If we concatenated something, *and* we had previously expanded + * an actual macro, scan the lines again for macros... + */ tline = thead; goto again; } |