Replace array indexing with pointer arithmetic in child() and
mutable_child() methods to avoid compiler warning when accessing
child nodes beyond the static array bounds.
The original code was functionally correct but triggered
-Warray-bounds when accessing mutable_child(32) during btree
operations. Using pointer arithmetic achieves the same result
without the bounds check warning.
This is a follow-up to commit
8458a19ab which fixed similar
warnings in other btree_node methods.
No functional changes.
Fixes: https://tracker.ceph.com/issues/72477
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
const_reference value(int i) const { return params_type::element(slot(i)); }
// Getters/setter for the child at position i in the node.
- btree_node* child(int i) const { return GetField<&internal_fields::children>()[i]; }
- btree_node*& mutable_child(int i) { return GetField<&internal_fields::children>()[i]; }
+ btree_node* child(int i) const { return *(GetField<&internal_fields::children>() + i); }
+ btree_node*& mutable_child(int i) { return *(GetField<&internal_fields::children>() + i); }
void clear_child(int i) {
#ifndef NDEBUG
memset(&mutable_child(i), 0, sizeof(btree_node*));