the -U option did not work properly; call do_undef() now

This commit is contained in:
eck
1990-04-18 16:40:17 +00:00
parent 52f08181a6
commit 64e9d11570
4 changed files with 19 additions and 27 deletions

View File

@@ -133,7 +133,7 @@ domacro()
do_pragma();
break;
case K_UNDEF: /* "undef" */
do_undef();
do_undef((char *)0);
break;
default:
/* invalid word seen after the '#' */
@@ -439,13 +439,15 @@ do_ifdef(how)
SkipToNewLine();
}
do_undef()
/* argstr != NULL when the undef came from a -U option */
do_undef(argstr)
char *argstr;
{
register struct idf *id;
register char *str;
register char *str = argstr;
/* Forget a macro definition. */
if (str = GetIdentifier(1)) {
if (str || (str = GetIdentifier(1))) {
if ((id = findidf(str)) && id->id_macro) {
if (id->id_macro->mc_flag & NOUNDEF) {
error("it is not allowed to #undef %s", str);
@@ -455,8 +457,10 @@ do_undef()
id->id_macro = (struct macro *) 0;
}
} /* else: don't complain */
free(str);
SkipToNewLine();
if (!argstr){
free(str);
SkipToNewLine();
}
}
else
error("illegal #undef construction");

View File

@@ -109,14 +109,7 @@ do_option(text)
options['P'] = 1;
break;
case 'U' : /* -Uname : undefine predefined */
if (*text) {
register struct idf *idef = findidf(text);
if (idef && idef->id_macro) {
free_macro(idef->id_macro);
idef->id_macro = (struct macro *) 0;
}
}
if (*text) do_undef(text);
break;
}
}