boostorg / boostorg/python

GCC: Wmaybe-uninitialized in indexing_suite_detail

Đang mở
#516 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C++
Star
537
Fork
223
Merge trung bình
11 giờ 22 phút
Pull request đã merge (30 ngày)
2

Mô tả

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.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.