Subject: [Boost-bugs] [Boost C++ Libraries] #10660: svg_mapper crash
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-10-15 15:56:42
#10660: svg_mapper crash
----------------------------------------+---------------------------
Reporter: Volker Schöch <vschoech@â¦> | Owner: barendgehrels
Type: Bugs | Status: new
Milestone: To Be Determined | Component: geometry
Version: Boost 1.56.0 | Severity: Problem
Keywords: svg_mapper, integer |
----------------------------------------+---------------------------
When I slightly modify the example from the
[http://www.boost.org/doc/libs/1_56_0/libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html
documentation], the code crashes with an obscure (for me) exception deep
in the callstack.
Running this code:
{{{
std::ostringstream svg;
// Specify the basic type
typedef boost::geometry::model::d2::point_xy<int> point_type;
// Declare some geometries and set their values
point_type a;
boost::geometry::assign_values(a, -100, -100);
// Declare a stream and an SVG mapper
boost::geometry::svg_mapper<point_type> mapper(svg, 1000, 1000);
// Add geometries such that all these geometries fit on the map
mapper.add(a);
// Draw the geometries on the SVG map, using a specific SVG style
mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0
);stroke-width:2", 5);
// Destructor of map will be called - adding </svg>
// Destructor of stream will be called, closing the file
}}}
... throws this exception:
{{{
Microsoft C++ exception: boost::numeric::negative_overflow at memory
location 0x00000000001E9D60.
}}}
... at this call-stack:
{{{
tcaddin.dll!_CxxThrowException(void * pExceptionObject, const
_s__ThrowInfo * pThrowInfo) Line 154 C++
tcaddin.dll!boost::numeric::def_overflow_handler::operator()(boost::numeric::range_check_result
r) Line 164 C++
tcaddin.dll!boost::numeric::convdetail::generic_range_checker<boost::numeric::conversion_traits<int,double>,boost::numeric::convdetail::LE_PrevLoT<boost::numeric::conversion_traits<int,double>
>,boost::numeric::convdetail::GE_SuccHiT<boost::numeric::conversion_traits<int,double>
>,boost::numeric::def_overflow_handler>::validate_range(double s) Line 294
C++
tcaddin.dll!boost::numeric::convdetail::rounding_converter<boost::numeric::conversion_traits<int,double>,boost::numeric::convdetail::generic_range_checker<boost::numeric::conversion_traits<int,double>,boost::numeric::convdetail::LE_PrevLoT<boost::numeric::conversion_traits<int,double>
>,boost::numeric::convdetail::GE_SuccHiT<boost::numeric::conversion_traits<int,double>
>,boost::numeric::def_overflow_handler>,boost::numeric::raw_converter<boost::numeric::conversion_traits<int,double>
>,boost::numeric::Trunc<double> >::convert(double s) Line 494 C++
tcaddin.dll!boost::numeric_cast<int,double>(double arg) Line 54 C++
tcaddin.dll!boost::geometry::strategy::transform::ublas_transformer<double,2,2>::apply<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,boost::geometry::model::point<int,2,boost::geometry::cs::cartesian>
>(const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
p1, boost::geometry::model::point<int,2,boost::geometry::cs::cartesian> &
p2) Line 115 C++
tcaddin.dll!boost::geometry::detail::transform::transform_point::apply<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,boost::geometry::model::point<int,2,boost::geometry::cs::cartesian>,boost::geometry::strategy::transform::map_transformer<double,2,2,1,1>
>(const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
p1, boost::geometry::model::point<int,2,boost::geometry::cs::cartesian> &
p2, const
boost::geometry::strategy::transform::map_transformer<double,2,2,1,1> &
strategy) Line 58 C++
tcaddin.dll!boost::geometry::resolve_strategy::transform::apply<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,boost::geometry::model::point<int,2,boost::geometry::cs::cartesian>,boost::geometry::strategy::transform::map_transformer<double,2,2,1,1>
>(const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
geometry1,
boost::geometry::model::point<int,2,boost::geometry::cs::cartesian> &
geometry2, const
boost::geometry::strategy::transform::map_transformer<double,2,2,1,1> &
strategy) Line 358 C++
tcaddin.dll!boost::geometry::resolve_variant::transform<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,boost::geometry::model::point<int,2,boost::geometry::cs::cartesian>
>::apply<boost::geometry::strategy::transform::map_transformer<double,2,2,1,1>
>(const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
geometry1,
boost::geometry::model::point<int,2,boost::geometry::cs::cartesian> &
geometry2, const
boost::geometry::strategy::transform::map_transformer<double,2,2,1,1> &
strategy) Line 391 C++
tcaddin.dll!boost::geometry::transform<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,boost::geometry::model::point<int,2,boost::geometry::cs::cartesian>,boost::geometry::strategy::transform::map_transformer<double,2,2,1,1>
>(const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
geometry1,
boost::geometry::model::point<int,2,boost::geometry::cs::cartesian> &
geometry2, const
boost::geometry::strategy::transform::map_transformer<double,2,2,1,1> &
strategy) Line 454 C++
tcaddin.dll!boost::geometry::dispatch::svg_map<boost::geometry::point_tag,boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>
>::apply<boost::geometry::strategy::transform::map_transformer<double,2,2,1,1>
>(std::basic_ostream<char,std::char_traits<char> > & stream, const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
style, int size, const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
point, const
boost::geometry::strategy::transform::map_transformer<double,2,2,1,1> &
strategy) Line 87 C++
tcaddin.dll!boost::geometry::svg_map<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,boost::geometry::strategy::transform::map_transformer<double,2,2,1,1>
>(std::basic_ostream<char,std::char_traits<char> > & stream, const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
style, int size, const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
geometry, const
boost::geometry::strategy::transform::map_transformer<double,2,2,1,1> &
strategy) Line 213 C++
tcaddin.dll!boost::geometry::svg_mapper<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>,1>::map<boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>
>(const
boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian> &
geometry, const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
style, int size) Line 334 C++
[...]
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/10660> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:17 UTC