Files
hdf5/tools/test
Scot Breitenfeld 9db35be232 Move H5Z_class3_t description field to the end of the struct
description was inserted right after name, ahead of can_apply,
set_local, and filter. A plugin author upgrading from H5Z_class2_t
by positionally initializing the common prefix and appending the new
v3 callbacks -- a very common style in this codebase, including our
own built-in filters until this commit -- would silently misassign
can_apply/set_local/filter one slot off, since those three fields sit
one position later than the class2 layout put them.

H5Z_class3_t has not shipped yet, so there is no ABI to preserve:
move description to the very end instead, after set_config and
get_config. This makes the first eight members match H5Z_class2_t's
layout exactly, so a caller who does nothing more than append
set_config/get_config/description keeps every original field in its
original slot; C zero-initializes anything a shorter initializer
omits, so an incomplete upgrade degrades safely rather than
misassigning a callback pointer. Future fields on this struct should
likewise be appended, never inserted.

Updates every existing positional initializer of H5Z_class3_t to
match: the six built-in filters, the h5repack dynlib3 test plugin,
and eighteen call sites in test/tfilter2.c. All 108 tfilter2 checks
pass after the change.
2026-09-04 16:59:50 -05:00
..