mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-03-19 18:00:23 +08:00
Fix the [warning] directive
Fix multiple bugs in the [warning] directive: - Only parsed on pass 1 - "-" was interpreted as "+"
This commit is contained in:
parent
f5fb723495
commit
f1e46600d2
56
nasm.c
56
nasm.c
@ -1394,37 +1394,35 @@ static void assemble_file(char *fname, StrList **depend_ptr)
|
||||
ofmt->current_dfmt->debug_directive(debugid, p);
|
||||
break;
|
||||
case D_WARNING: /* [WARNING {+|-|*}warn-name] */
|
||||
if (pass1 == 1) {
|
||||
while (*value && nasm_isspace(*value))
|
||||
value++;
|
||||
while (*value && nasm_isspace(*value))
|
||||
value++;
|
||||
|
||||
switch(*value) {
|
||||
case '-': validid = 1; value++; break;
|
||||
case '+': validid = 1; value++; break;
|
||||
case '*': validid = 2; value++; break;
|
||||
default: validid = 1; break;
|
||||
}
|
||||
switch(*value) {
|
||||
case '-': validid = 0; value++; break;
|
||||
case '+': validid = 1; value++; break;
|
||||
case '*': validid = 2; value++; break;
|
||||
default: validid = 1; break;
|
||||
}
|
||||
|
||||
for (i = 1; i <= ERR_WARN_MAX; i++)
|
||||
if (!nasm_stricmp(value, warnings[i].name))
|
||||
break;
|
||||
if (i <= ERR_WARN_MAX) {
|
||||
switch(validid) {
|
||||
case 0:
|
||||
warning_on[i] = false;
|
||||
break;
|
||||
case 1:
|
||||
warning_on[i] = true;
|
||||
break;
|
||||
case 2:
|
||||
warning_on[i] = warning_on_global[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
report_error(ERR_NONFATAL,
|
||||
"invalid warning id in WARNING directive");
|
||||
}
|
||||
for (i = 1; i <= ERR_WARN_MAX; i++)
|
||||
if (!nasm_stricmp(value, warnings[i].name))
|
||||
break;
|
||||
if (i <= ERR_WARN_MAX) {
|
||||
switch(validid) {
|
||||
case 0:
|
||||
warning_on[i] = false;
|
||||
break;
|
||||
case 1:
|
||||
warning_on[i] = true;
|
||||
break;
|
||||
case 2:
|
||||
warning_on[i] = warning_on_global[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
report_error(ERR_NONFATAL,
|
||||
"invalid warning id in WARNING directive");
|
||||
break;
|
||||
case D_CPU: /* [CPU] */
|
||||
cpu = get_cpu(value);
|
||||
|
Loading…
x
Reference in New Issue
Block a user