diff --git a/AK/IntrusiveRedBlackTree.h b/AK/IntrusiveRedBlackTree.h index fb2db6b92e1..a5585de662c 100644 --- a/AK/IntrusiveRedBlackTree.h +++ b/AK/IntrusiveRedBlackTree.h @@ -174,7 +174,14 @@ private: static V* node_to_value(TreeNode& node) { +#ifdef AK_OS_WINDOWS + // NOTE: https://learn.microsoft.com/en-us/cpp/build/reference/vmb-vmg-representation-method?view=msvc-170 + static_assert(sizeof(member) == 4); + auto distance = bit_cast(static_cast(bit_cast(member))); + return bit_cast(bit_cast(&node) - distance); +#else return bit_cast(bit_cast(&node) - bit_cast(member)); +#endif } };