]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
include/cpp-btree: fix array bounds warning in child() accessors
authorKefu Chai <k.chai@proxmox.com>
Mon, 8 Dec 2025 08:29:00 +0000 (16:29 +0800)
committerKefu Chai <k.chai@proxmox.com>
Mon, 8 Dec 2025 12:13:47 +0000 (20:13 +0800)
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>
src/include/cpp-btree/btree.h

index e8077db7b71890a0cf74d13e66baa4dcc26cd359..a689b2d43a2e591efe9fd9575cd5bc73763a8985 100644 (file)
@@ -511,8 +511,8 @@ public:
   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*));