mirror of
https://gitlab.com/c3d/db48x.git
synced 2024-09-29 05:36:58 +02:00
units: Do not accept user functions in unit expressions
Reject something like `1_km(s+N)` Fixes: #1171 Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
This commit is contained in:
parent
60faccd143
commit
8330601303
3 changed files with 16 additions and 1 deletions
|
@ -2213,6 +2213,13 @@ PARSE_BODY(funcall)
|
|||
nty != ID_list && nty != ID_array)
|
||||
return SKIP;
|
||||
|
||||
// Cannot parse functions while parsing a unit
|
||||
if (unit::mode)
|
||||
{
|
||||
rt.invalid_unit_expression_error().source(p.source);
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
// Skip whitespace
|
||||
utf8 source = p.source;
|
||||
size_t max = p.length;
|
||||
|
|
|
@ -391,6 +391,8 @@ retry:
|
|||
// Check if we found the second part
|
||||
if (r2 == OK)
|
||||
size += p.length;
|
||||
else if (r2 != SKIP)
|
||||
r = r2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4920,7 +4920,13 @@ void tests::units_and_conversions()
|
|||
|
||||
step("Invalid unit exponent")
|
||||
.test(CLEAR, "1_km^s", ENTER).error("Invalid unit expression");
|
||||
step("Invalid unit expression")
|
||||
step("Invalid unit expression for 1_km/(s+N)")
|
||||
.test(CLEAR, "1_km/",
|
||||
ALPHA, SHIFT, F,
|
||||
LOWERCASE, S, NOSHIFT, ADD, ALPHA, N,
|
||||
ENTER).error("Invalid unit expression")
|
||||
.test(CLEAR);
|
||||
step("Invalid unit expression for 1_km(s+N)")
|
||||
.test(CLEAR, "1_km/",
|
||||
ALPHA, SHIFT, F, UP, BSP, DOWN,
|
||||
LOWERCASE, S, NOSHIFT, ADD, ALPHA, N,
|
||||
|
|
Loading…
Reference in a new issue