From: Brad Hubbard Date: Thu, 11 Apr 2019 05:00:25 +0000 (+1000) Subject: crush/CrushCompiler: Fix __replacement_assert X-Git-Tag: v14.2.1~11^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3a037a76edcf94db3ec41aafa1b8f595a997c0c4;p=ceph.git crush/CrushCompiler: Fix __replacement_assert When compiled with _GLIBCXX_ASSERTIONS we see an assert due to UB of passing the address of an empty vector. Use vector's data member function instead of address of array syntax. Fixes: http://tracker.ceph.com/issues/39174 Signed-off-by: Brad Hubbard (cherry picked from commit a950ac230ec900c53fa74f46c18f86a459c80831) --- diff --git a/src/crush/CrushCompiler.cc b/src/crush/CrushCompiler.cc index a512489bc57..52ad056381a 100644 --- a/src/crush/CrushCompiler.cc +++ b/src/crush/CrushCompiler.cc @@ -744,7 +744,7 @@ int CrushCompiler::parse_bucket(iter_t const& i) ceph_assert(id != 0); int idout; int r = crush.add_bucket(id, alg, hash, type, size, - &items[0], &weights[0], &idout); + items.data(), weights.data(), &idout); if (r < 0) { if (r == -EEXIST) err << "Duplicate bucket id " << id << std::endl;