fix: close the review findings on the issue wave

Ported from d719fb77 (#1717); the hatch draw-order, PDF and
recovery-settle hunks stay out (main owns those paths).

- La16 was still billed at 4 B/px: the no-conversion special case
  keyed on native_bpp == 4, which La16 also is — but only Rgba8 is a
  real move in into_rgba8, so La16's decode peak is 8. The case now
  keys on the color type, and a table test pins every layout's peak
  (plus GIF's screen+frame 8) so the accounting can't silently drift.
- json_values_match: an integer beyond f64 precision no longer matches
  a float it merely rounds onto; a mixed pair matches only when the
  float is whole and converts back to exactly that integer (also the
  fuzz finding of 9262d63f).
- ocs-control.js resolves `ready` with the API object instead of
  window.ocsControl, which is still undefined when the bridge already
  exists as the script runs (built before the first settle, avoiding
  the temporal-dead-zone throw of a later const); DATALINK on web says
  the typed path is superseded by the picker instead of silently
  discarding it.

(cherry picked from commit d719fb77)
This commit is contained in:
Afonsop authored and Hakan Seven committed 2026-10-12 12:02:05 +03:00
1 parent db8db14006
commit 2d2444fcfa
26 files changed
+116 -7

No files matched your search

+6 -2
View File
@@ -20,8 +20,12 @@
let readyResolve;
const ready = new Promise(resolve => { readyResolve = resolve; });
// Built before the first settle() can run (`request` is a hoisted
// function declaration): `ready` resolves with this object even when the
// bridge already exists as the script runs.
const apiObject = {ready, request};
const settle = () => {
readyResolve(window.ocsControl);
readyResolve(apiObject);
window.dispatchEvent(new Event("ocs-ready"));
};
const poll = setInterval(() => {
@@ -68,5 +72,5 @@
return reply;
}
window.ocsControl = {ready, request};
window.ocsControl = apiObject;
})();