fix(buffer): avoid shared _extendedAttrs sentinel breaking addon-image
EMPTY_SPARSE_EXTENDED was shared across lines via copyFrom; addon-image writes _extendedAttrs directly without copy-on-write, which caused tile eviction failures and broke instanceof Object checks. Use undefined for empty extended maps (keep EMPTY_SPARSE_MAP for _combined). Ensure addon-image forks the map before writes and update the accessor test. Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com>
This commit is contained in:
co-authored by
Daniel Imms
parent
81b3b1ec46
commit
dec5452fc0
@@ -118,7 +118,10 @@ test.describe('ImageAddon', () => {
|
||||
}
|
||||
// bufferline privates
|
||||
strictEqual(await ctx.page.evaluate('window.term._core.buffer.lines.get(0)._data instanceof Uint32Array'), true);
|
||||
strictEqual(await ctx.page.evaluate('window.term._core.buffer.lines.get(0)._extendedAttrs instanceof Object'), true);
|
||||
strictEqual(await ctx.page.evaluate(`(() => {
|
||||
const ea = window.term._core.buffer.lines.get(0)._extendedAttrs;
|
||||
return ea === undefined || (typeof ea === 'object' && ea !== null);
|
||||
})()`), true);
|
||||
// inputhandler privates
|
||||
strictEqual(await ctx.page.evaluate('window.term._core._inputHandler._curAttrData.constructor.name'), '_AttributeData');
|
||||
strictEqual(await ctx.page.evaluate('window.term._core._inputHandler._parser.constructor.name'), 'EscapeSequenceParser');
|
||||
|
||||
Reference in New Issue
Block a user