Correct handling of resizable ArrayBuffer?
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 30/100
- Issue 类型
- 缺陷
- 描述清晰度
- 需要澄清
- 活跃度
- 冷清
- 技术栈
- javascript
- 领域
- web-dev
调研方向
该 issue 未指出任何 repository 文件或测试。首先确定 Blob 构造在源 TypedArray 使用 resizable ArrayBuffer 且其大小在复制期间发生变化时的预期行为,然后记录所选择的行为,以及 specification 是否应要求产生错误或其他结果。
由索引模型根据 Issue 内容生成。
描述
Given const b = new Blob([A, B]), where A is a TypedArray with a resizable ArrayBuffer, what is the expected behavior?
Chrome/Firefox currently both throw an error if any of the source ArrayBuffer instances are resizable; other runtimes do not.
There is an issue here if A is resized while the Blob is being constructed and the data is being copied. This can happen, for instance, if B has a getter for it's length that causes A to be resized and the implementation uses a flow like...
let total = 0;
for (const chunk of chunks) {
total += chunk.length; // B could resize A as a side effect here
}
const dest = allocate(total);
for (const chunk of chunks) {
copy chunk into dest
}
Let's suppose that A and B both initially have length 10, but B's length getter resizes A to 5... what should the result be?
- Length 15, with 5 bytes from A, 10 bytes from B, allocation gets trimmed at the end of the copy
- Length 20, with 5 bytes from A, 10 bytes from B, and 5 zeroed bytes at the end?
- Length 20, with 5 bytes from A, 5 zeroed bytes, 10 bytes from B
- Error thrown because length changed?
- Something else?
What if A is resized larger? Is the result just truncated?
Should the spec for Blob explicitly make Chrome/Firefox's behavior of throwing immediately on resizable ArrayBuffer's standard? etc.
/cc @guybedford
- 主要语言
- HTML
- 星标
- 118
- 派生
- 52
- 平均合并
- 9 天 16 小时
- 30 天内合并 PR
- 1
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
w3c/FileAPI 的其他 Issue
-
TPAC2026
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 1/5 1 小时以内 新手友好度 62/100
-
难度 2/5 1-3 小时 新手友好度 68/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
palladius/rails8-app-on-gcp#145 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
safetrustcr/dApp-SafeTrust#426 ·
-
test-change-proposal
难度 2/5 1-3 小时 新手友好度 65/100
web-platform-tests/interop#1455 ·
-
enhancement
难度 2/5 1-3 小时 新手友好度 65/100
bramus/rich-input#7 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
corsairdev/corsair#1764 ·