mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-17 09:02:25 +00:00
Allow unary minus in ftepp_if_value
This commit is contained in:
parent
0d839bd138
commit
654eceb33b
1 changed files with 14 additions and 0 deletions
14
ftepp.c
14
ftepp.c
|
@ -788,6 +788,7 @@ static bool ftepp_if_value(ftepp_t *ftepp, bool *out, double *value_out)
|
|||
{
|
||||
ppmacro *macro;
|
||||
bool wasnot = false;
|
||||
bool wasneg = false;
|
||||
|
||||
if (!ftepp_skipspace(ftepp))
|
||||
return false;
|
||||
|
@ -799,6 +800,14 @@ static bool ftepp_if_value(ftepp_t *ftepp, bool *out, double *value_out)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (ftepp->token == TOKEN_OPERATOR && !strcmp(ftepp_tokval(ftepp), "-"))
|
||||
{
|
||||
wasneg = true;
|
||||
ftepp_next(ftepp);
|
||||
if (!ftepp_skipspace(ftepp))
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (ftepp->token) {
|
||||
case TOKEN_IDENT:
|
||||
case TOKEN_TYPENAME:
|
||||
|
@ -855,6 +864,7 @@ static bool ftepp_if_value(ftepp_t *ftepp, bool *out, double *value_out)
|
|||
}
|
||||
break;
|
||||
case TOKEN_STRINGCONST:
|
||||
*value_out = 0;
|
||||
*out = false;
|
||||
break;
|
||||
case TOKEN_INTCONST:
|
||||
|
@ -878,8 +888,12 @@ static bool ftepp_if_value(ftepp_t *ftepp, bool *out, double *value_out)
|
|||
|
||||
default:
|
||||
ftepp_error(ftepp, "junk in #if: `%s` ...", ftepp_tokval(ftepp));
|
||||
if (opts.debug)
|
||||
ftepp_error(ftepp, "internal: token %i\n", ftepp->token);
|
||||
return false;
|
||||
}
|
||||
if (wasneg)
|
||||
*value_out = -*value_out;
|
||||
if (wasnot) {
|
||||
*out = !*out;
|
||||
*value_out = (*out ? 1 : 0);
|
||||
|
|
Loading…
Reference in a new issue