Merge pull request #4346 from Tyriar/4314_2

Clamp start and end in render service to ensure they're valid
This commit is contained in:
Daniel Imms
2022-12-21 17:03:15 -08:00
committed by GitHub
2 changed files with 10 additions and 5 deletions
@@ -352,7 +352,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
let lastBg: number;
let y: number;
let row: number;
let line: IBufferLine | undefined;
let line: IBufferLine;
let joinedRanges: [number, number][];
let isJoined: boolean;
let lastCharX: number;
@@ -365,10 +365,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
for (y = start; y <= end; y++) {
row = y + terminal.buffer.ydisp;
line = terminal.buffer.lines.get(row);
if (!line) {
break;
}
line = terminal.buffer.lines.get(row)!;
this._model.lineLengths[y] = 0;
joinedRanges = this._characterJoinerService.getJoinedCharacters(row);
for (x = 0; x < terminal.cols; x++) {
+8
View File
@@ -152,6 +152,14 @@ export class RenderService extends Disposable implements IRenderService {
if (!this._renderer) {
return;
}
// Since this is debounced, a resize event could have happened between the time a refresh was
// requested and when this triggers. Clamp the values of start and end to ensure they're valid
// given the current viewport state.
start = Math.min(start, this._rowCount - 1);
end = Math.min(end, this._rowCount - 1);
// Render
this._renderer.renderRows(start, end);
// Update selection if needed