On Monday, 4 January 2021 at 18:05:40 UTC, tsbockman wrote:
/* XXX: haven't done private members yet, wonder if they're
needed to
* complete this */
Leaving out the private members of a struct changes its size,
and sometimes its alignment. This will definitely break things
if you ever allocate an instance yourself (including via the
stack).
If you only EVER access that type via pointers to instances
allocated by an API which internally uses the complete, correct
definition, and ALL of the private members are at the end of
the struct, it should work - but those are two big "if"s, and
too easy to unthinkingly violate later by accident. So, it is
best to ensure that the struct definition matches precisely on
both the D and C sides of the API, or at least enough to ensure
that the size and alignment are the same.
While the struct that comment is from (ImageInfo) had been fixed
before your message[0], I do appreciate the information here
since I wasn't aware of it before and it helped solve the issue
(see my reply to Steve). Thanks.
[0]: https://repo.or.cz/magickd.git/commit/27ac82b110