nav_types: make btni_t not packed
The use of bitfields of 10 bits makes the use of unsigned char
impossible.
That means the compiler might use more bits than expected for the 4*12 bits.
This is the case with MS-compatible compilers. We cannot guarantee that the
btin_t will use the same 10 octets as used in the binary blob.
In the end btin_t
is not read as a packed structure but bit by bit in navRead_PCI()
.
This is breaking the ABI. So while we're at it we remove the packing (and trailing zeros) of structures that are not read as packed structures. They were not read as packed structures when libdvdread was split from libdvdnav but the packed attribute was kept.
Merge request reports
Activity
mentioned in merge request vlc!2400 (merged)
mentioned in merge request vlc!2402 (merged)
mentioned in commit robUx4/vlc@5c236278
mentioned in merge request vlc!2416 (merged)
mentioned in merge request libdvdnav!51 (closed)
libdvdnav!51 (closed) is a lighter fix for this issue on Windows as it doesn't involve ABI changes other than on Windows.
This minimal fix is libdvdnav!51 (closed). The proper/future-proof/safe fix is this MR.
mentioned in commit robUx4/vlc@1a082006
mentioned in commit robUx4/vlc@94db2f10
mentioned in commit robUx4/vlc@1964f384
mentioned in merge request vlc!2457 (merged)
mentioned in commit robUx4/vlc@49a27d65