mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-29 04:09:39 +03:00
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.