fix(format): measure compound members by their stored size
The compound overlap check measured each earlier member with Datatype::type_size, which is a fixed 16 for a variable-length type. On disk a VL member takes 4 + offset size + 4 bytes, 12 in a file with 4-byte offsets, so a member right after one was refused as "member overlaps with previous member" (and with the type, every attribute of the object). libhdf5 measures members by their decoded, stored size (times a v1 member's array dimensions); so does this now. Reading VL values in such files is a separate, older gap, now recorded in known-issues. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -129,6 +129,12 @@ fill-value item that did is fixed).
|
||||
failing the others.
|
||||
- **Other readers:**
|
||||
- VL-string datasets are not readable through `File`.
|
||||
- Variable-length values inside a compound (and VL-string attributes) in
|
||||
a file with 4-byte offsets (`sizeof_addr = 4`) fail with
|
||||
`GlobalHeapObjectNotFound` or come back as `Raw`: these paths assume
|
||||
the 16-byte element of an 8-byte-offset file. The datatype itself reads
|
||||
(it was refused as "member overlaps with previous member" until
|
||||
2026-09-26).
|
||||
- Metadata cache images are not supported.
|
||||
- x87 long double and binary128 are refused.
|
||||
- N-Bit on 64-bit scale-offset data and some N-Bit parameter layouts fail.
|
||||
|
||||
Reference in New Issue
Block a user