Fix bug with parser state when using vtop

Fixes #662
This commit is contained in:
Daniel Imms
2017-05-25 09:36:59 -07:00
parent 35b32b721e
commit 2c3d98abc8
2 changed files with 9 additions and 2 deletions
+2 -1
View File
@@ -181,7 +181,7 @@ export class Parser {
*
* @param data The data to parse.
*/
public parse(data: string) {
public parse(data: string): ParserState {
let l = data.length, j, cs, ch, code, low;
this._position = 0;
@@ -564,6 +564,7 @@ export class Parser {
break;
}
}
return this._state;
}
/**
+7 -1
View File
@@ -1252,7 +1252,13 @@ Terminal.prototype.innerWrite = function() {
this.refreshStart = this.y;
this.refreshEnd = this.y;
this.parser.parse(data);
// HACK: Set the parser state based on it's state at the time of return.
// This works around the bug #662 which saw the parser state reset in the
// middle of parsing escape sequence in two chunks. For some reason the
// state of the parser resets to 0 after exiting parser.parse. This change
// just sets the state back based on the correct return statement.
var state = this.parser.parse(data);
this.parser.setState(state);
this.updateRange(this.y);
this.refresh(this.refreshStart, this.refreshEnd);