util/rb_tree: Stop relying on &iter->field != NULL
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 25 Sep 2019 15:02:15 +0000 (10:02 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Thu, 26 Sep 2019 20:36:41 +0000 (20:36 +0000)
commit5ca4f574693800c254cfe834ddf2ce28c15d1746
treeec06b3b2fd1da966dc1b15740ea7a92fb09b6a01
parentf18aad6dc0ac8408bc73f3fbf31b976114a5e1bc
util/rb_tree: Stop relying on &iter->field != NULL

The old version of the iterators relies on a &iter->field != NULL check
which works fine on older GCC but newer GCC versions and clang have
optimizations that break if you do pointer math on a null pointer.  The
correct solution to this is to do the null comparisons before we do any
sort of &iter->field or use rb_node_data to do the reverse operation.

Acked-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Michel Dänzer <mdaenzer@redhat.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/util/rb_tree.h