I found a bug in libcob/termio.c line 309
cob_accept_arg_value (cob_field *f)
{
if ( current_arg > cob_argc ) {
return;
}
cob_memcpy (f, cob_argv[current_arg], strlen
(cob_argv[current_arg]));
current_arg++;
}
Here is the Cobol-Code to get the Segmentation fault:
MOVE SPACE TO WRK-ARGUMENT
ACCEPT WRK-ARGUMENT FROM ARGUMENT-VALUE
PERFORM WITH TEST BEFORE UNTIL WRK-ARGUMENT = SPACE
DISPLAY WRK-ARGUMENT
MOVE SPACE TO WRK-ARGUMENT
ACCEPT WRK-ARGUMENT FROM ARGUMENT-VALUE
END-PERFORM
the Problem is a simple 0 - 1 Problem:
current_arg is the index of the argument starting at 0
and cob_argc is the number of arguments.
so current_arg may never be greater than cob_argc -1
Changing line 306 to "if ( current_arg >= cob_argc )" solves the problem.
In MicroFocus Cobol the first argument is not the programname it self, but
really the first argument following the programname,
would this be a bug or is this the normal behaviour?
Franklin