boostorg / boostorg/python

GCC: Wmaybe-uninitialized in indexing_suite_detail

Abierto
#516 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
537
Forks
223
Merge medio
11 h 22 min
PR fusionados (30 d)
2

Descripción

Recent GCC versions (tested on `g++ (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7)` on Fedora 43 with Boost 1.83, but should not differ from newer Boost versions), when compiling this minimal working example:

```
#include
#include
namespace py = boost::python;

BOOST_PYTHON_MODULE(Types) {
py::class_>("StringVector").def(py::vector_indexing_suite>());
}
```

with this command line: `g++ -shared -fPIC Types.cxx -Wextra -O2 -std=c++17 -I/usr/include/python3.14 -I/usr/include/boost -
lboost_python314 -lpython3.14`

throw `Wmaybe-uninitialized`:

```
In file included from /usr/include/c++/15/string:56,
from /usr/include/boost/assert/source_location.hpp:15,
from /usr/include/boost/exception/exception.hpp:9,
from /usr/include/boost/throw_exception.hpp:21,
from /usr/include/boost/function/detail/prologue.hpp:16,
from /usr/include/boost/function/function_template.hpp:13,
from /usr/include/boost/function/detail/maybe_include.hpp:15,
from /usr/include/boost/function/function0.hpp:11,
from /usr/include/boost/python/errors.hpp:13,
from /usr/include/boost/python/handle.hpp:11,
from /usr/include/boost/python/args_fwd.hpp:10,
from /usr/include/boost/python/args.hpp:10,
from /usr/include/boost/python.hpp:11,
from Types.cxx:1:
In member function ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size() const [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’,
inlined from ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::length() const [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ at /usr/include/c++/15/bits/basic_string.h:1176:20,
inlined from ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator]’ at /usr/include/c++/15/bits/basic_string.h:617:20,
inlined from ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::__cxx11::basic_string; _Args = {const std::__cxx11::basic_string, std::allocator >&}; _Tp = std::__cxx11::basic_string]’ at /usr/include/c++/15/bits/new_allocator.h:191:4,
inlined from ‘static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::__cxx11::basic_string; _Args = {const std::__cxx11::basic_string, std::allocator >&}; _Tp = std::__cxx11::basic_string]’ at /usr/include/c++/15/bits/alloc_traits.h:674:17,
inlined from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::__cxx11::basic_string; _Alloc = std::allocator >]’ at /usr/include/c++/15/bits/stl_vector.h:1421:30,
inlined from ‘void boost::python::container_utils::extend_container(Container&, boost::python::api::object) [with Container = std::vector >]’ at /usr/include/boost/python/suite/indexing/container_utils.hpp:44:40:
/usr/include/c++/15/bits/basic_string.h:1165:19: warning: ‘*(const std::__cxx11::basic_string, std::allocator >*)((char*)&x + offsetof(boost::python::extract, std::allocator > >,boost::python::extract, std::allocator > >::.boost::python::converter::extract_rvalue, std::allocator > >::m_data.boost::python::converter::rvalue_from_python_data, std::allocator > >::.boost::python::converter::rvalue_from_python_storage, std::allocator > >::storage)).std::__cxx11::basic_string::_M_string_length’ may be used uninitialized [-Wmaybe-uninitialized]
1165 | size_type __sz = _M_string_length;
| ^~~~
```

This can be traced down to originating from this line in `indexing_suite.hpp`: https://github.com/boostorg/python/blob/105d64e8895ab893e5ac9e0380647d216c2cb8d9/include/boost/python/suite/indexing/detail/indexing_suite_detail.hpp#L678

Since this was not touched since Boost 1.83, I believe this to still be relevant. This seems unintentional and due to our project treating warnings as errors, for us this leads to a compile error.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.