Skip to content

Commit

Permalink
Fix for unpaired surrogates in data codepoints. PROTOCOL CHANGE!
Browse files Browse the repository at this point in the history
  • Loading branch information
MightyPork committed Sep 30, 2017
1 parent a66e90e commit cee23ca
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions js/term/screen_parser.js
Expand Up @@ -10,7 +10,9 @@ const SEQ_SET_BG = 6
const SEQ_SET_ATTR_0 = 7

function du (str) {
return str.codePointAt(0) - 1
let num = str.codePointAt(0)
if (num > 0xDFFF) num -= 0x800
return num - 1
}

/* eslint-disable no-multi-spaces */
Expand Down Expand Up @@ -152,10 +154,8 @@ module.exports = class ScreenParser {
} else if (topic === TOPIC_CURSOR) {

// cursor position
const [cursorY, cursorX] = [
strArray[ci++].codePointAt(0) - 1,
strArray[ci++].codePointAt(0) - 1
]
const cursorY = du(strArray[ci++])
const cursorX = du(strArray[ci++])
const hanging = du(strArray[ci++])

const cursorMoved = (
Expand Down Expand Up @@ -296,7 +296,7 @@ module.exports = class ScreenParser {
let data
switch (charCode) {
case SEQ_REPEAT:
let count = strArray[ci++].codePointAt(0) - 1
let count = du(strArray[ci++])
for (let j = 0; j < count; j++) {
pushCell()
if (++cell > screenLength) break
Expand Down

0 comments on commit cee23ca

Please sign in to comment.