Opened 7 years ago
#189 new defect
hcom.pl1 oper declaration incorrectly includes -fill and -nofill
| Reported by: | Gary Dixon | Owned by: | Eric Swenson |
|---|---|---|---|
| Priority: | minor | Milestone: | |
| Component: | General | Version: | |
| Keywords: | Cc: |
Description
While checking code in hcom.pl1, I noted that the array oper (which declares names of control_args that
accept an operand) includes -fill and -nofill (control_args that do not accept an operand). It also includes
-field_names (a control_args that accepts 0, 1, or more non-control_arg operands).
These are problematic because code near the start of hcom.pl1 tries to locate the first positional argument by checking for control_args that match words in the oper array. If found, this code unconditionally skips the next argument in the arg_list, assuming it is the operand of the matched control_arg. As we have seen,
-fill and -nofill accept no operands; and -field_names accepts 0, 1, or more non-control_arg operands. This code is therefore flawed.
All this was done in an effort to allow hcom to intermix positional arguments and control_args within the command line. Since most users give the first positional argument as the 1st arg in the command line, they don't encounter this bug. (The loop in question stops as soon as the first positional arg is found.) So this bug is minor in nature.
