Merge pull request #3909 from Tyriar/3905_followup

Be more defensive when setting extended ansi colors
This commit is contained in:
Daniel Imms
2022-07-19 06:08:50 -07:00
committed by GitHub
2 changed files with 5 additions and 5 deletions
+2 -2
View File
@@ -315,14 +315,14 @@ describe('ColorManager', () => {
extendedAnsi: DEFAULT_ANSI_COLORS.map(a => a.css).slice().reverse()
});
for (let ansiColor = 16; ansiColor <= 255; ansiColor++){
for (let ansiColor = 16; ansiColor <= 255; ansiColor++) {
assert.equal(cm.colors.ansi[ansiColor].css, DEFAULT_ANSI_COLORS[255 + 16 - ansiColor].css);
}
});
it('should set one extended ansi colors and keep the other default', () => {
cm.setTheme({
extendedAnsi: [ '#ffffff' ]
extendedAnsi: ['#ffffff']
});
assert.equal(cm.colors.ansi[16].css, '#ffffff');
+3 -3
View File
@@ -168,9 +168,9 @@ export class ColorManager implements IColorManager {
this.colors.ansi[14] = this._parseColor(theme.brightCyan, DEFAULT_ANSI_COLORS[14]);
this.colors.ansi[15] = this._parseColor(theme.brightWhite, DEFAULT_ANSI_COLORS[15]);
if (theme.extendedAnsi) {
const colorCount = Math.max(theme.extendedAnsi.length + 16, 256);
for (let i = 16; i < colorCount; i++) {
this.colors.ansi[i] = this._parseColor(theme.extendedAnsi[i - 16], DEFAULT_ANSI_COLORS[i]);
const colorCount = Math.min(this.colors.ansi.length - 16, theme.extendedAnsi.length);
for (let i = 0; i < colorCount; i++) {
this.colors.ansi[i + 16] = this._parseColor(theme.extendedAnsi[i], DEFAULT_ANSI_COLORS[i + 16]);
}
}
// Clear our the cache