diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src index 666d49b1..98826097 100644 --- a/doc/nasmdoc.src +++ b/doc/nasmdoc.src @@ -2206,9 +2206,9 @@ or a numeric value) to a single-line macro. \S{strcat} \i{Concatenating Strings}: \i\c{%strcat} -The \{%strcat} operator concatenates quoted strings and assign them to +The \c{%strcat} operator concatenates quoted strings and assign them to a single-line macro. In doing so, it may change the type of quotes -and possibly use \c{\}-escapes inside \c{`}-quoted strings in order to +and possibly use \c{\\}-escapes inside \c{`}-quoted strings in order to make sure the string is still a valid quoted string. For example: @@ -2222,7 +2222,7 @@ Similarly: ... would assign the value \c{`"'`} to \c{beta}. -The use of commas to separate strings are permitted but optional. +The use of commas to separate strings is permitted but optional. \S{strlen} \i{String Length}: \i\c{%strlen} @@ -2773,10 +2773,10 @@ of \c{%ifmacro}. Additional tests can be performed in \c{%elif} blocks by using \S{ifctx} \i\c{%ifctx}: Testing the Context Stack\I{testing, context stack} -The conditional-assembly construct \c{%ifctx ctxname} will cause the +The conditional-assembly construct \c{%ifctx} will cause the subsequent code to be assembled if and only if the top context on -the preprocessor's context stack has the name \c{ctxname}. As with -\c{%ifdef}, the inverse and \c{%elif} forms \i\c{%ifnctx}, +the preprocessor's context stack has the same name as one of the arguments. +As with \c{%ifdef}, the inverse and \c{%elif} forms \i\c{%ifnctx}, \i\c{%elifctx} and \i\c{%elifnctx} are also supported. For more details of the context stack, see \k{ctxstack}. For a diff --git a/preproc.c b/preproc.c index b0fbaadb..39aa2abf 100644 --- a/preproc.c +++ b/preproc.c @@ -1486,15 +1486,17 @@ static bool if_condition(Token * tline, enum preproc_token ct) switch (i) { case PPC_IFCTX: j = false; /* have we matched yet? */ - while (cstk && tline) { + while (true) { skip_white_(tline); - if (!tline || tline->type != TOK_ID) { + if (!tline) + break; + if (tline->type != TOK_ID) { error(ERR_NONFATAL, "`%s' expects context identifiers", pp_directives[ct]); free_tlist(origline); return -1; } - if (cstk->name && !nasm_stricmp(tline->text, cstk->name)) + if (cstk && cstk->name && !nasm_stricmp(tline->text, cstk->name)) j = true; tline = tline->next; } diff --git a/test/_version.asm b/test/_version.asm index fc2e178d..4c89a859 100755 --- a/test/_version.asm +++ b/test/_version.asm @@ -1,2 +1,2 @@ -;Testname=version; Arguments=-v; Files=.stdout .stderr +;Testname=version; Arguments=-v; Files=.stdout ;Dummy test to record version numbers