Skip to content

Commit 9fed8e2

Browse files
committed
defensive underline event coords handling in DOM renderer
1 parent 118915c commit 9fed8e2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/browser/renderer/dom/DomRenderer.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,18 @@ export class DomRenderer extends Disposable implements IRenderer {
393393
}
394394

395395
private _setCellUnderline(x: number, x2: number, y: number, y2: number, cols: number, enabled: boolean): void {
396-
x = this._cellToRowElements[y][x];
397-
x2 = this._cellToRowElements[y2][x2];
396+
const lenY = this._cellToRowElements.length - 1;
397+
if (y < 0) x = 0;
398+
if (y2 < 0) x2 = 0;
399+
y = Math.max(Math.min(y, lenY), 0);
400+
y2 = Math.max(Math.min(y2, lenY), 0);
401+
const elemY = this._cellToRowElements[y];
402+
const elemY2 = this._cellToRowElements[y2];
403+
if (x >= elemY.length || x2 >= elemY2.length) {
404+
return;
405+
}
406+
x = elemY[x];
407+
x2 = elemY2[x2];
398408

399409
if (x === -1 || x2 === -1) {
400410
return;

0 commit comments

Comments
 (0)