better type list verification, don't print message on bad new_command

master
Daniel Kolesa 2016-09-02 19:34:59 +01:00
parent 6c0b6da94d
commit bb4c34a3fb
1 changed files with 10 additions and 5 deletions

View File

@ -1245,25 +1245,30 @@ CsCommand *CsState::new_command(
case 'r': case 'r':
case '$': case '$':
if (nargs < MaxArguments) { if (nargs < MaxArguments) {
nargs++; ++nargs;
} }
break; break;
case '1': case '1':
case '2': case '2':
case '3': case '3':
case '4': case '4':
if (nargs < (*fmt - '0')) {
return nullptr;
}
if ((fmt.size() != 2) || ((fmt[1] != 'C') && (fmt[1] != 'V'))) {
return nullptr;
}
if (nargs < MaxArguments) { if (nargs < MaxArguments) {
fmt.push_front_n(*fmt - '0' + 1); fmt.push_front_n(*fmt - '0' + 1);
} }
break; break;
case 'C': case 'C':
case 'V': case 'V':
if (fmt.size() != 1) {
return nullptr;
}
break; break;
default: default:
get_err().writefln(
"builtin %s declared with illegal type: %c",
name, fmt.front()
);
return nullptr; return nullptr;
} }
} }