From 5075e9a2f8f2bf6ff35e4bb77018825d71a50fb3 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 29 Mar 2018 01:27:33 +0200 Subject: [PATCH] Fixes #45735: Fix implementation of getLineCharCode --- .../common/model/pieceTreeTextBuffer/pieceTreeBase.ts | 2 +- .../pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts index 13c81a70acb..e5cc6a1b291 100644 --- a/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts +++ b/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts @@ -538,7 +538,7 @@ export class PieceTreeBase { let nodePos = this.nodeAt2(lineNumber, index + 1); let buffer = this._buffers[nodePos.node.piece.bufferIndex]; let startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start); - let targetOffset = startOffset + index; + let targetOffset = startOffset + nodePos.remainder; return buffer.buffer.charCodeAt(targetOffset); } diff --git a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts index e5b6970d888..266e9de61ae 100644 --- a/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts +++ b/src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts @@ -1571,6 +1571,15 @@ suite('buffer api', () => { assert(!a.equal(b)); }); + + test('getLineCharCode - issue #45735', () => { + let pieceTable = createTextBuffer(['LINE1\nline2']); + assert.equal(pieceTable.getLineCharCode(2, 0), 'l'.charCodeAt(0), 'l'); + assert.equal(pieceTable.getLineCharCode(2, 1), 'i'.charCodeAt(0), 'i'); + assert.equal(pieceTable.getLineCharCode(2, 2), 'n'.charCodeAt(0), 'n'); + assert.equal(pieceTable.getLineCharCode(2, 3), 'e'.charCodeAt(0), 'e'); + assert.equal(pieceTable.getLineCharCode(2, 4), '2'.charCodeAt(0), '2'); + }); }); suite('search offset cache', () => { -- GitLab