Opened 14 months ago
Last modified 14 months ago
#368 new defect
tty_write_ outputs erroneous spacing.
| Reported by: | canthony | Owned by: | Eric Swenson |
|---|---|---|---|
| Priority: | minor | Milestone: | |
| Component: | Hardcore | Version: | |
| Keywords: | line_length tty_write | Cc: |
Description
Attached is tty_write.ec, containing:
&command_line off stty -delay 0,0,0,0,0,0 -modes ^erkl,^esc,^ll flnnl AAAAAAAAAAAAAAAAAAAAAAAAAA flnnl BBBBBBBBBBBBBBBBBBBBBBBBBB flnnl CCCCCCCCCCCCCCCCCCCCCCCCCC flnnl DDDDDDDDDDDDDDDDDDDDDDDDDD flnnl EEEEEEEEEEEEEEEEEEEEEEEEEE flnnl FFFFFFFFFFFFFFFFFFFFFFFFFF flnnl GGGGGGGGGGGGGGGGGGGGGGGGGG flnnl HHHHHHHHHHHHHHHHHHHHHHHHHH flnnl IIIIIIIIIIIIIIIIIIIIIIIIII flnnl JJJJJJJJJJJJJJJJJJJJJJJJJJ flnnl KKKKKKKKKKKKKKKKKKKKKKKKKK flnnl LLLLLLLLLLLLLLLLLLLLLLLLLL flnnl MMMMMMMMMMMMMMMMMMMMMMMMMM flnnl NNNNNNNNNNNNNNNNNNNNNNNNNN flnnl OOOOOOOOOOOOOOOOOOOOOOOOOO flnnl PPPPPPPPPPPPPPPPPPPPPPPPPP flnnl QQQQQQQQQQQQQQQQQQQQQQQQQQ flnnl RRRRRRRRRRRRRRRRRRRRRRRRRR flnnl SSSSSSSSSSSSSSSSSSSSSSSSSS flnnl TTTTTTTTTTTTTTTTTTTTTTTTTT flnnl UUUUUUUUUUUUUUUUUUUUUUUUUU flnnl WWWWWWWWWWWWWWWWWWWWWWWWWW
When executed, the following output is generated:
ec tty_write
AAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCDD
DDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFGGGG
GGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJ
JJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMM
MMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPP
PPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSS
SSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUU
UUUUUUUUUUUUUUUUUU
In wtcb.incl.pl1, line 81 is:
2 actcol fixed bin (9) unsigned unaligned, /* tty column position */
tty_write_ tracks the tty column position there; when the column position exceeds 511, the 9 bit value overflows and wraps around zero.
Also in wtcb.incl.pl1, line 81:
2 white_col fixed bin (17) unaligned, /* column position resulting from trailing white space */
Note that this is an 18 bit value.
In tty_write.pl1, lines 1161 to 1167:
insert_white:
proc;
/* this procedure puts white space into the output string */
if wcol ^= col /* make sure we're not already where we belong */
then do;
Normally wcol tracks col; but due to the overflow of col, insert_space appends spaces to the output to advance col to match wcol.
Note: col and wcol are local copies of wtcb.col and wtcb.white_col, declared as fixed bin. The overflow occurs when tty_write finishes a string and updates wtcb from the local copies; on the next call to tty_write the locals are restored from wtcb and insert_white generates the extra spaces.
Attachments (3)
Change History (4)
by , 14 months ago
| Attachment: | tty_write.ec added |
|---|
comment:1 by , 14 months ago
by , 14 months ago
| Attachment: | tty_write.trace1.txt added |
|---|
Trace though pl1 code of tty_trace call that overflows col
by , 14 months ago
| Attachment: | tty_write.trace2.txt added |
|---|
Trace though pl1 code of tty_trace call that generates the extra spaces

HDBG trace:
https://drive.google.com/file/d/1Owt26A46G2mRfRg5wa-h2HqjKwxgBC9n/view?usp=sharing