mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-09 06:30:21 +01:00
On m68k, 32bit integer are aligned to only 2 bytes. This breaks assumptions and a static assertion of c-rbtree. Explicitly require that the first field is aligned to at least 4 bytes. This fixes the build and ensures that all valid pointers to a CRBTree have the lowest two bits unset (so they can be used for storing 2 additional flags). Use a union instead of aligning __parent_and_flags itself. That is because alignas() cannot lower the natural alignment, so if we would want to align __parent_and_flags, we could only do alignas(sizeof(unsigned long) > 4 ? sizeof(unsigned long) : 4) That would not be correct if "long" is 8 bytes long but had a natural alignment of only 4. The union allows us to specify an alignment of at least 4, but otherwise follow natural alignment. |
||
|---|---|---|
| .. | ||
| c-list | ||
| c-rbtree | ||
| c-siphash | ||
| c-stdaux | ||
| n-acd | ||
| n-dhcp4 | ||
| nm-glib-aux | ||
| nm-std-aux | ||
| nm-udev-aux | ||
| nm-utils | ||
| systemd | ||
| meson.build | ||
| nm-default.h | ||
| nm-meta-setting.c | ||
| nm-meta-setting.h | ||
| nm-test-libnm-utils.h | ||
| nm-test-utils-impl.c | ||
| nm-version-macros.h.in | ||