提交 e7eec544 编写于 作者: J Johannes Rieken

filter invalid entries when asking marker service for data, fixes #5952

上级 7cbf2790
......@@ -182,7 +182,11 @@ export abstract class MarkerService implements IMarkerService {
entry.value.forEach(data => {
// before reading, we sanitize the data
MarkerService._sanitize(data);
// skip entry if not sanitizable
const ok = MarkerService._sanitize(data);
if (!ok) {
return;
}
bucket.push({
owner: key.owner,
......@@ -279,12 +283,17 @@ export abstract class MarkerService implements IMarkerService {
}
}
private static _sanitize(data: IMarkerData): void {
private static _sanitize(data: IMarkerData): boolean {
if (!data.message) {
return false;
}
data.code = data.code || null;
data.startLineNumber = data.startLineNumber > 0 ? data.startLineNumber : 1;
data.startColumn = data.startColumn > 0 ? data.startColumn : 1;
data.endLineNumber = data.endLineNumber >= data.startLineNumber ? data.endLineNumber : data.startLineNumber;
data.endColumn = data.endColumn > 0 ? data.endColumn : data.startColumn;
return true;
}
}
......
......@@ -123,4 +123,22 @@ suite('Marker Service', () => {
assert.equal(service.read({ owner: 'far' }).length, 2);
});
test('invalid marker data', () => {
let data = randomMarkerData();
let service = new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
data.message = undefined;
service.changeOne('far', URI.parse('some:uri/path'), [data]);
assert.equal(service.read({ owner: 'far' }).length, 0);
data.message = null;
service.changeOne('far', URI.parse('some:uri/path'), [data]);
assert.equal(service.read({ owner: 'far' }).length, 0);
data.message = 'null';
service.changeOne('far', URI.parse('some:uri/path'), [data]);
assert.equal(service.read({ owner: 'far' }).length, 1);
});
});
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册