some fixes
This commit is contained in:
@@ -132,7 +132,7 @@ domacro()
|
||||
}
|
||||
|
||||
PRIVATE
|
||||
skip_block()
|
||||
skip_block(to_endif)
|
||||
{
|
||||
/* skip_block() skips the input from
|
||||
1) a false #if, #ifdef, #ifndef or #elif until the
|
||||
@@ -173,7 +173,7 @@ skip_block()
|
||||
push_if();
|
||||
break;
|
||||
case K_ELIF:
|
||||
if (nestlevel == skiplevel) {
|
||||
if (! to_endif && nestlevel == skiplevel) {
|
||||
nestlevel--;
|
||||
push_if();
|
||||
if (ifexpr()) {
|
||||
@@ -183,11 +183,13 @@ skip_block()
|
||||
}
|
||||
break;
|
||||
case K_ELSE:
|
||||
++(ifstack[nestlevel]);
|
||||
if (nestlevel == skiplevel) {
|
||||
SkipRestOfLine();
|
||||
NoUnstack--;
|
||||
return;
|
||||
if (! to_endif) {
|
||||
++(ifstack[nestlevel]);
|
||||
if (nestlevel == skiplevel) {
|
||||
SkipRestOfLine();
|
||||
NoUnstack--;
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case K_ENDIF:
|
||||
@@ -328,7 +330,7 @@ do_elif()
|
||||
else { /* restart at this level as if a #if is detected. */
|
||||
nestlevel--;
|
||||
push_if();
|
||||
skip_block();
|
||||
skip_block(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -340,7 +342,7 @@ do_else()
|
||||
lexerror("#else without corresponding #if");
|
||||
else { /* mark this level as else-d */
|
||||
++(ifstack[nestlevel]);
|
||||
skip_block();
|
||||
skip_block(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,7 +361,7 @@ do_if()
|
||||
{
|
||||
push_if();
|
||||
if (!ifexpr()) /* a false #if/#elif expression */
|
||||
skip_block();
|
||||
skip_block(0);
|
||||
}
|
||||
|
||||
PRIVATE
|
||||
@@ -377,7 +379,7 @@ do_ifdef(how)
|
||||
(how && !id->id_macro) || (!how && id->id_macro)
|
||||
*/
|
||||
if (how ^ (id && id->id_macro != 0))
|
||||
skip_block();
|
||||
skip_block(0);
|
||||
else
|
||||
SkipRestOfLine();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user