Warning in multi_index_container/1.34.0/GCC-4.2.0

Compiling some code using Boost 1.34.0 and GCC 4.2.0, I get this warning with -O1: multi_index/ordered_index.hpp: In member function ...multi_index_base_type...insert_ multi_index/ordered_index.hpp:566 'inf.side' may be used uninitialized in this function It looks like the only position where inf.side is not initialized is line 830. But I can't tell if line 574 will be executed in this case (where inf.side is used) But I hope you can fix this warning in the next release. Joerg

Hello Jörg, Richter, Jörg ha escrito:
Compiling some code using Boost 1.34.0 and GCC 4.2.0, I get this warning with -O1:
multi_index/ordered_index.hpp: In member function ...multi_index_base_type...insert_ multi_index/ordered_index.hpp:566 'inf.side' may be used uninitialized in this function
It looks like the only position where inf.side is not initialized is line 830. But I can't tell if line 574 will be executed in this case (where inf.side is used)
No, it won't, because in that case, link_point and then hinted_link_point return false, making insert_ exit at line 568. This warning has already been reported, please see http://lists.boost.org/boost-users/2007/02/25815.php At the time I was reluctant to fix the warning because it's bogus (the supposedly offending variable is never used uninitialized) and the fix does not have 0 runtime cost (it's abolutely negligible, but anyway.) But as I've received other complaints on the same issue since the one referred to above, I guess I'll fix it for the next version of Boost. In the meantime you can shut the compiler by manually changing lines 798-802: struct link_info { ordered_index_side side; ordered_index_node_impl* pos; }; to: struct link_info { link_info():side(to_left){} ordered_index_side side; ordered_index_node_impl* pos; }; Does this make the compiler happy? Thank you for using Boost.MultiIndex, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo
participants (2)
-
Joaquín Mª López Muñoz
-
Richter, Jörg