Repository navigation
v1.9.1 — iccviz memory-safety + degenerate-detection (rebuild iccplot WASM)
profiletool 1.9.1 rebuilds the iccplot WASM module so the shipped Profile Plot / Analysis visualizations carry the memory-safety and degenerate-detection fixes surfaced by the iccDEV #1712 Copilot review. No UI or feature changes — this is a correctness/safety patch on the visualization engine.
Fixes
- Use-after-free / double-free in the visualization transform path.
CIccXform::Createdefaults tobOwnsProfile=true, so a failedCreate()deleted the borrowed profile the caller still owned. All 5 call sites inIccVizModelnow passbOwnsProfile=false. This was reachable from the shipped Profile Plot / Analysis code. - Degenerate-gamut detection for Gamut Volume. The enclosed-volume estimate uses morphological closing, which floors a collapsed plane/line at ~1 voxel and reports a non-zero sheet/tube artifact instead of ~0. A new closed-form principal-axis analysis (
iccvizmath::principalStdDevs, symmetric-3×3 eigenvalues) flags a boundary cloud collapsed toward a plane (thinnest extent ≈ 0) so the metric is marked degenerate rather than silently wrong. - Signed-overflow hardening. Two
S + 1index computations promoted to(double)S + 1.0. - Doc-comment corrections — the tag walk uses a fixed canonical signature order, not the profile's tag-table order.
Build provenance
Built against a clean iccDEV origin/master (3c656146). Only iccplot.wasm changes versus 1.9.0 — no IccProfLib drift into the other modules. scripts/build-wasm.sh --verify reproduces the committed SHA256SUMS.
The same source fixes are staged upstream for iccDEV (#1712 successor branch); profiletool ships them now because the bug is reachable in the deployed WASM.