diff --git a/src/browser/renderer/dom/DomRenderer.ts b/src/browser/renderer/dom/DomRenderer.ts index 9cee75a8..e24177d1 100644 --- a/src/browser/renderer/dom/DomRenderer.ts +++ b/src/browser/renderer/dom/DomRenderer.ts @@ -393,8 +393,18 @@ export class DomRenderer extends Disposable implements IRenderer { } private _setCellUnderline(x: number, x2: number, y: number, y2: number, cols: number, enabled: boolean): void { - x = this._cellToRowElements[y][x]; - x2 = this._cellToRowElements[y2][x2]; + const lenY = this._cellToRowElements.length - 1; + if (y < 0) x = 0; + if (y2 < 0) x2 = 0; + y = Math.max(Math.min(y, lenY), 0); + y2 = Math.max(Math.min(y2, lenY), 0); + const elemY = this._cellToRowElements[y]; + const elemY2 = this._cellToRowElements[y2]; + if (x >= elemY.length || x2 >= elemY2.length) { + return; + } + x = elemY[x]; + x2 = elemY2[x2]; if (x === -1 || x2 === -1) { return;