From 991eec3842712ada049534c5a342a77d5cfe6080 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 21 Oct 2020 10:40:07 +0200 Subject: Squashed 'shared/c-rbtree/' changes from bd1c14dc0d93..3162c5c04574 3162c5c04574 build: synchronize AUTHORS c795b7657f4f c-rbtree: align CRBTree with CRBNode 10d973a9e671 c-rbtree: fix struct alignment of CRBTree on m68k architectures git-subtree-dir: shared/c-rbtree git-subtree-split: 3162c5c04574789144aff9de55c423cc8b636c85 --- AUTHORS | 2 ++ src/c-rbtree.h | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index b59660c5ee..ed4e72e915 100644 --- a/AUTHORS +++ b/AUTHORS @@ -34,4 +34,6 @@ COPYRIGHT: (ordered alphabetically) AUTHORS: (ordered alphabetically) David Rheinsberg + Kay Sievers + Thomas Haller Tom Gundersen diff --git a/src/c-rbtree.h b/src/c-rbtree.h index a9bbce52f2..d4d0fe45c0 100644 --- a/src/c-rbtree.h +++ b/src/c-rbtree.h @@ -27,6 +27,7 @@ extern "C" { #endif #include +#include #include typedef struct CRBNode CRBNode; @@ -58,7 +59,11 @@ typedef struct CRBTree CRBTree; * C_RBNODE_INIT. */ struct CRBNode { - unsigned long __parent_and_flags; + union { + unsigned long __parent_and_flags; + /* enforce >=4-byte alignment for @__parent_and_flags */ + alignas(4) unsigned char __align_dummy; + }; CRBNode *left; CRBNode *right; }; @@ -88,7 +93,11 @@ void c_rbnode_unlink_stale(CRBNode *n); * To initialize an RB-Tree, set it to NULL / all zero. */ struct CRBTree { - CRBNode *root; + union { + CRBNode *root; + /* enforce >=4-byte alignment for @root */ + alignas(4) unsigned char __align_dummy; + }; }; #define C_RBTREE_INIT {} -- cgit v1.2.3