Skip to content

Commit ca666da

Browse files
committed
Fix microsoft#45892. Null check
1 parent 234d100 commit ca666da

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,13 @@ export class PieceTreeBase {
592592
const searcher = new Searcher(searchData.wordSeparators, searchData.regex);
593593

594594
let startPostion = this.nodeAt2(searchRange.startLineNumber, searchRange.startColumn);
595+
if (startPostion === null) {
596+
return [];
597+
}
595598
let endPosition = this.nodeAt2(searchRange.endLineNumber, searchRange.endColumn);
599+
if (endPosition === null) {
600+
return [];
601+
}
596602
let start = this.positionInBuffer(startPostion.node, startPostion.remainder);
597603
let end = this.positionInBuffer(endPosition.node, endPosition.remainder);
598604

src/vs/editor/test/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import { SENTINEL, NodeColor, TreeNode } from 'vs/editor/common/model/pieceTreeT
1414
import { PieceTreeTextBuffer } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer';
1515
import { TextModel } from 'vs/editor/common/model/textModel';
1616
import { ITextSnapshot } from 'vs/platform/files/common/files';
17+
import { SearchData } from 'vs/editor/common/model/textModelSearch';
18+
import { WordCharacterClassifier } from 'vs/editor/common/controller/wordCharacterClassifier';
1719

1820
const alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n';
1921

@@ -1776,4 +1778,13 @@ suite('snapshot', () => {
17761778

17771779
assert.notEqual(model.getLinesContent().join('\n'), getValueInSnapshot(snapshot));
17781780
});
1781+
});
1782+
1783+
suite('chunk based search', () => {
1784+
test('#45892. For some cases, the buffer is empty but we still try to search', () => {
1785+
let pieceTree = createTextBuffer(['']);
1786+
pieceTree.delete(0, 1);
1787+
let ret = pieceTree.findMatchesLineByLine(new Range(1, 1, 1, 1), new SearchData(/abc/, new WordCharacterClassifier(',./'), 'abc'), true, 1000);
1788+
assert.equal(ret.length, 0);
1789+
});
17791790
});

0 commit comments

Comments
 (0)