-
Notifications
You must be signed in to change notification settings - Fork 228
Open
Description
since boost 1.89 the following source
#include <boost/geometry/algorithms/intersection.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <deque>
typedef boost::geometry::model::d2::point_xy<double> point_t;
typedef boost::geometry::model::polygon<point_t, false> polygon_t;
int main()
{
polygon_t tri1, tri2;
std::deque<polygon_t> output;
boost::geometry::intersection(tri1, tri2, output);
return 0;
}
raises a -Wmaybe-uninitialized warning with -O3 -DNDEBUG (archlinux, gcc 15.2.1, boost 1.89.0):
Step 5/5 : RUN cd /tmp && g++ -Wall -Werror -O3 -DNDEBUG main4.cxx
---> Running in 510ed788c17f
In file included from /usr/include/boost/geometry/formulas/andoyer_inverse.hpp:21,
from /usr/include/boost/geometry/strategies/geographic/parameters.hpp:16,
from /usr/include/boost/geometry/strategies/detail.hpp:15,
from /usr/include/boost/geometry/algorithms/detail/equals/point_point.hpp:27,
from /usr/include/boost/geometry/algorithms/detail/point_on_border.hpp:30,
from /usr/include/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp:29,
from /usr/include/boost/geometry/algorithms/detail/intersection/interface.hpp:18,
from /usr/include/boost/geometry/algorithms/intersection.hpp:18,
from main4.cxx:1:
In static member function ‘static T boost::geometry::math::detail::abs<T, true>::apply(const T&) [with T = double]’,
inlined from ‘boost::geometry::math::detail::equals_factor_policy<T, IsFloatingPoint>::equals_factor_policy(const T&, const T&, const T&, const T&) [with T = double; bool IsFloatingPoint = true]’ at /usr/include/boost/geometry/util/math.hpp:133:40,
inlined from ‘bool boost::geometry::detail::overlay::approximately_equals(const Point1&, const Point2&, const E&) [with Point1 = boost::geometry::model::d2::point_xy<double>; Point2 = boost::geometry::model::d2::point_xy<double>; E = double]’ at /usr/include/boost/geometry/algorithms/detail/overlay/approximately_equals.hpp:61:48,
inlined from ‘boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::point_type boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::walk_to_point_after_turn(const Operation&, const point_type&) const [with Operation = boost::geometry::detail::overlay::traversal_turn_operation<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >; bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’ at /usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:81:38,
inlined from ‘boost::geometry::detail::overlay::turn_operation_id boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::select_by_side(edges_type&, const point_type&, const point_type&) const [with bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’ at /usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:153:50,
inlined from ‘boost::geometry::detail::overlay::turn_operation_id boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::select_target_edge(const boost::geometry::detail::overlay::set_of_tois&, const point_type&, const point_type&) const [with bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’ at /usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:299:30:
/usr/include/boost/geometry/util/math.hpp:107:26: error: ‘point.boost::geometry::model::d2::point_xy<double, boost::geometry::cs::cartesian>::<unnamed>.boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>::m_values[1]’ may be used uninitialized [-Werror=maybe-uninitialized]
107 | return fabs(value);
| ^
In file included from /usr/include/boost/geometry/algorithms/detail/overlay/graph/traverse_graph.hpp:19,
from /usr/include/boost/geometry/algorithms/detail/overlay/traverse.hpp:22,
from /usr/include/boost/geometry/algorithms/detail/overlay/overlay.hpp:37,
from /usr/include/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp:34:
/usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp: In member function ‘boost::geometry::detail::overlay::turn_operation_id boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::select_target_edge(const boost::geometry::detail::overlay::set_of_tois&, const point_type&, const point_type&) const [with bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’:
/usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:75:20: note: ‘point.boost::geometry::model::d2::point_xy<double, boost::geometry::cs::cartesian>::<unnamed>.boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>::m_values[1]’ was declared here
75 | point_type point;
| ^~~~~
In static member function ‘static T boost::geometry::math::detail::abs<T, true>::apply(const T&) [with T = double]’,
inlined from ‘boost::geometry::math::detail::equals_factor_policy<T, IsFloatingPoint>::equals_factor_policy(const T&, const T&, const T&, const T&) [with T = double; bool IsFloatingPoint = true]’ at /usr/include/boost/geometry/util/math.hpp:132:40,
inlined from ‘bool boost::geometry::detail::overlay::approximately_equals(const Point1&, const Point2&, const E&) [with Point1 = boost::geometry::model::d2::point_xy<double>; Point2 = boost::geometry::model::d2::point_xy<double>; E = double]’ at /usr/include/boost/geometry/algorithms/detail/overlay/approximately_equals.hpp:61:48,
inlined from ‘boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::point_type boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::walk_to_point_after_turn(const Operation&, const point_type&) const [with Operation = boost::geometry::detail::overlay::traversal_turn_operation<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >; bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’ at /usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:81:38,
inlined from ‘boost::geometry::detail::overlay::turn_operation_id boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::select_by_side(edges_type&, const point_type&, const point_type&) const [with bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’ at /usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:153:50,
inlined from ‘boost::geometry::detail::overlay::turn_operation_id boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::select_target_edge(const boost::geometry::detail::overlay::set_of_tois&, const point_type&, const point_type&) const [with bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’ at /usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:299:30:
/usr/include/boost/geometry/util/math.hpp:107:26: error: ‘point.boost::geometry::model::d2::point_xy<double, boost::geometry::cs::cartesian>::<unnamed>.boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>::m_values[0]’ may be used uninitialized [-Werror=maybe-uninitialized]
107 | return fabs(value);
| ^
/usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp: In member function ‘boost::geometry::detail::overlay::turn_operation_id boost::geometry::detail::overlay::edge_selector<Reverse1, Reverse2, OverlayType, Geometry1, Geometry2, Turns, Clusters, Strategy>::select_target_edge(const boost::geometry::detail::overlay::set_of_tois&, const point_type&, const point_type&) const [with bool Reverse1 = true; bool Reverse2 = true; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Geometry2 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false>; Turns = std::deque<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> >, std::allocator<boost::geometry::detail::overlay::traversal_turn_info<boost::geometry::model::d2::point_xy<double>, boost::geometry::segment_ratio<double> > > >; Clusters = std::map<long int, boost::geometry::detail::overlay::cluster_info>; Strategy = boost::geometry::strategies::relate::cartesian<>]’:
/usr/include/boost/geometry/algorithms/detail/overlay/graph/select_edge.hpp:75:20: note: ‘point.boost::geometry::model::d2::point_xy<double, boost::geometry::cs::cartesian>::<unnamed>.boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>::m_values[0]’ was declared here
75 | point_type point;
| ^~~~~
cc1plus: all warnings being treated as errors
Metadata
Metadata
Assignees
Labels
No labels