Hello Ingo,
I found a solution for both problems. Two similar tests in co.c
and rcs.c are involved. I commented them out and both of my test
scripts showed the expected result, none failed.
In co.c, I commented out lines 271-279, in rcs.c lines 923-929.
In both files the involved test are commented with
'/* XXX rcsnum_cmp()'.
Probably someone was already working at that point. In co.c, the
further comment is "Check out the latest revision if <frev> is
greater than HEAD". The test in rcs.c has obviously the same
intention.
Both tests fail, because they do not regard the higher value of
the higher places in rn_id[]. The test decides, that requested
revion number is higher than the head revision, if ANY place
makes the comparison rf_head->rn_id[i] < rev->rn_id[i] true, even
if the comparison of higer valued places should have proven, that
the requested version is lower than the head revision.
The obviously intended change to use rcsnum_cmp() for theese tests
would probably also heal the problem, because rcsnum_cmp() seems
to regard the higher value of the higher places. I choosed to
just comment out the tests, because
a) this was just the easiest work-around
b) I do understand, why theese tests are usefull:
would it not be better to give an error message,
if the requested revision does not exist, in spite
of silently deliver the head revision?
The two test spripts can be found in my older mails in this thread:
mail 2019-01-14 script2 testing revision numbers 1.1, 1.2, 2.1
mail 2019-01-12 script1 testing revision numbers 0.1, 0.2, 1.1
Best regards,
Bernward.