Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #610 and #612 - two telnet terminal issues. #613

Merged
merged 2 commits into from Feb 24, 2015

Conversation

Dunbaratu
Copy link
Member

Problem #610:
The problem was caused by the screen differ attempting
to actually print the nullchars stored in the screen
buffer instead of printing them as space chars. Thus a
diff chunk that should have been printed as "AAA BBB" got
printed out as "AAA" followed by 3 null chars, followed by
"BBB". The terminal on the client end will not advance the
cursor forward when printing a null char, thus the "BBB" got
printed adjacent to the "AAA".

Interestingly, the reason I didn't detect the problem in my own testing
before release is that it need exactly the following conditions to be true
in order to trigger it:

(A) the area of the screen being PRINT AT'ed to has to have been
    previously unused. (If it had been populated by some text and then
    the text overwritten by  the PRINT AT, then the PRINT AT worked
    fine.  For example, if you print out a decorative border with spaces
    filling its inside, then paint the values atop those spaces, the bug
    didn't appear - which is why I didn't catch it.)
and
(B) The run of space between the "AAA" and the "BBB" has to be no
    larger than JOIN_DIFF_DIST (6) to trigger the problem, thus
    PRINT "AAAAAA" AT (20,5). PRINT "BBB" AT (30,5).
    will trigger the problem, while
    PRINT "AAAAAA" AT (20,5). PRINT "BBB" AT (40,5).
    will not.  If the two strings are far enough apart, then the
    system will teleport the cursor from one to the other instead
    of trying to print out the intervening space.

Problem #612:
The problem was caused by slight messy behavior about the
timestamp ages on rows of the screen that are occluded by a
subbuffer and then the subbuffer shrinks to reveal more of
the screen it was masking. The system didn't mark the screen
rows it previously masked off as being newly changed and in
need of an update.

Problem KSP-KOS#610:
    The problem was caused by the screen differ attempting
    to actually print the nullchars stored in the screen
    buffer instead of printing them as space chars.  Thus a
    diff chunk that should have been printed as "AAA   BBB" got
    printed out as "AAA" followed by 3 null chars, followed by
    "BBB".  The terminal on the client end will not advance the
    cursor forward when printing a null char, thus the "BBB" got
    printed adjacent to the "AAA".

Problem KSP-KOS#612:
    The problem was caused by slight messy behavior about the
    timestamp ages on rows of the screen that are occluded by a
    subbuffer and then the subbuffer shrinks to reveal more of
    the screen it was masking.  The system didn't mark the screen
    rows it previously masked off as being newly changed and in
    need of an update.
@erendrake erendrake merged commit c4b831f into KSP-KOS:develop Feb 24, 2015
@Dunbaratu Dunbaratu deleted the fixes-620-and-612 branch April 27, 2015 03:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants