From b7438d57cfd38164536aa8d433045d6510027cd4 Mon Sep 17 00:00:00 2001 From: Bruno Ribeito Date: Sun, 5 Nov 2017 15:11:02 +0000 Subject: [PATCH 1/2] Fix #948 --- src/Buffer.ts | 6 +++++- src/Terminal.ts | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Buffer.ts b/src/Buffer.ts index 8922c3d6..3072f552 100644 --- a/src/Buffer.ts +++ b/src/Buffer.ts @@ -11,6 +11,7 @@ export const CHAR_DATA_ATTR_INDEX = 0; export const CHAR_DATA_CHAR_INDEX = 1; export const CHAR_DATA_WIDTH_INDEX = 2; export const CHAR_DATA_CODE_INDEX = 3; +export const MAX_BUFFER_SIZE = -1 >>> 0; // 2^32 - 1 /** * This class represents a terminal buffer (an internal state of the terminal), where the @@ -68,7 +69,10 @@ export class Buffer implements IBuffer { if (!this._hasScrollback) { return rows; } - return rows + this._terminal.options.scrollback; + + const correctBuferLength = rows + this._terminal.options.scrollback; + + return correctBuferLength > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE : correctBuferLength; } /** diff --git a/src/Terminal.ts b/src/Terminal.ts index 17bf6f65..2dc83883 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -22,7 +22,7 @@ */ import { BufferSet } from './BufferSet'; -import { Buffer } from './Buffer'; +import { Buffer, MAX_BUFFER_SIZE } from './Buffer'; import { CompositionHelper } from './CompositionHelper'; import { EventEmitter } from './EventEmitter'; import { Viewport } from './Viewport'; @@ -384,6 +384,8 @@ export class Terminal extends EventEmitter implements ITerminal, IInputHandlingT } break; case 'scrollback': + value = value > 0 && value <= MAX_BUFFER_SIZE ? value : MAX_BUFFER_SIZE; + if (value < 0) { console.warn(`${key} cannot be less than 0, value: ${value}`); return; From 9c4ff54f22e87ecacb0b99d3bfa339d282d3ae60 Mon Sep 17 00:00:00 2001 From: Bruno Ribeito Date: Sun, 5 Nov 2017 21:13:54 +0000 Subject: [PATCH 2/2] Fix review comments --- src/Buffer.ts | 6 +++--- src/Terminal.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Buffer.ts b/src/Buffer.ts index 3072f552..623c3854 100644 --- a/src/Buffer.ts +++ b/src/Buffer.ts @@ -11,7 +11,7 @@ export const CHAR_DATA_ATTR_INDEX = 0; export const CHAR_DATA_CHAR_INDEX = 1; export const CHAR_DATA_WIDTH_INDEX = 2; export const CHAR_DATA_CODE_INDEX = 3; -export const MAX_BUFFER_SIZE = -1 >>> 0; // 2^32 - 1 +export const MAX_BUFFER_SIZE = 4294967295; // 2^32 - 1 /** * This class represents a terminal buffer (an internal state of the terminal), where the @@ -70,9 +70,9 @@ export class Buffer implements IBuffer { return rows; } - const correctBuferLength = rows + this._terminal.options.scrollback; + const correctBufferLength = rows + this._terminal.options.scrollback; - return correctBuferLength > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE : correctBuferLength; + return correctBufferLength > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE : correctBufferLength; } /** diff --git a/src/Terminal.ts b/src/Terminal.ts index 2dc83883..5ac8a1a0 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -384,7 +384,7 @@ export class Terminal extends EventEmitter implements ITerminal, IInputHandlingT } break; case 'scrollback': - value = value > 0 && value <= MAX_BUFFER_SIZE ? value : MAX_BUFFER_SIZE; + value = Math.min(value, MAX_BUFFER_SIZE); if (value < 0) { console.warn(`${key} cannot be less than 0, value: ${value}`);