> function integer_range_info(range_option, init, option)
> {
> if (range_option != "") {
> - start = nth_arg(0, range_option);
> - end = nth_arg(1, range_option);
> + init = init + 0;
> + start = nth_arg(0, range_option) + 0;
> + end = nth_arg(1, range_option) + 0;
> if (init != "" && init != "-1" && (init < start || init > end))
In this case the test for init != "" is at least unnecessary.
Right! Thanks for noticing.
Maybe something else has to be used. I didn't trace the uses but if init
is deliberately set to "" then the test would have to be replaced with init
!= 0.
Hm, in principle Init() can specify any non-negative number, including
0... what about a conservative approach that fixes the ordering problem
but leaves the "special cases" -1 and "" with exactly the same semantics
than before:
function integer_range_info(range_option, init, option)
{
if (range_option != "") {
ival = init + 0;
start = nth_arg(0, range_option) + 0;
end = nth_arg(1, range_option) + 0;
if (init != "" && init != "-1" && (ival < start || ival > end))
print "#error initial value " init " of '" option "' must be in range
[" start "," end "]"
return start ", " end
}
else
return "-1, -1"
}