Skip to content

ICU: per-item zstd decompression hook for compressed libicudata#31200

Merged
Jarred-Sumner merged 20 commits into
mainfrom
claude/icu-decompress-hook
May 23, 2026
Merged

ICU: per-item zstd decompression hook for compressed libicudata#31200
Jarred-Sumner merged 20 commits into
mainfrom
claude/icu-decompress-hook

Gate ICUDecompressor behind OS(LINUX); other platforms have unmodifie…

d0e7449
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed May 22, 2026 in 10m 28s

Code review found 1 important issue

Found 8 candidates, confirmed 1. See review comments for details.

Details

Severity Count
🔴 Important 1
🟡 Nit 0
🟣 Pre-existing 0
Severity File:Line Issue
🔴 Important src/jsc/bindings/bun_icu_decompress.cpp:67 tryAlignedMalloc debug ASSERT fires when dlen is not 16-aligned

Annotations

Check failure on line 67 in src/jsc/bindings/bun_icu_decompress.cpp

See this annotation in the file changed.

@claude claude / Claude Code Review

tryAlignedMalloc debug ASSERT fires when dlen is not 16-aligned

`MimallocMalloc::tryAlignedMalloc(dlen, 16)` will trip the debug `ASSERT(((alignment - 1) & size) == 0)` at MimallocWTFMalloc.h:82 whenever the decompressed item size isn't a multiple of 16 — ICU `.res` items are only 4-byte-aligned, and the zstd frame's content size is the raw item length. The PR's test matrix lists baseline / compressed-release / compressed-LTO but not compressed-debug, so this path hasn't been exercised with `ASSERT_ENABLED`. Round the allocation size up, e.g. `tryAlignedMall