Dear Boost Geometry
One of our customers experienced a crash which I was able to trance down to a non-std::exception thrown when using the dissolve function with version 1.66.
In addition I see the same error when I download your latest Developer Branch from GitHub and put it on top of Boost Version 1.66
I therefore implemented a test case for you reproducing the error:
BOOST_AUTO_TEST_CASE(Boost_Dissolve_ThowsException)
{
polygon<point_xy<float>>
Poly;
read_wkt("POLYGON((13.78
-2.18,"
" 7.04 -2.33,"
" 7.08 -2.33,"
"16.05 -0.55,"
"16.46 -6.08,"
"16.99 -5.82,"
" 2.92 -1.99,"
"15.14 -1.65,"
"17.41 -4.42,"
"13.78 -2.18))", Poly);
multi_polygon<polygon<point_xy<float>>>
Result;
int Catched = 0;
try
{
boost::geometry::dissolve(Poly, Result);
}
catch (const
std::exception&
/*ex*/)
{
Catched = 1;
}
catch (...)
{
Catched = 2;
}
BOOST_CHECK(Catched == 2);
}
When I run this using Visual C++ 2013 with C++ Exceptions set to “Yes with SHE Exceptions (/EHa)” I can catch the error in the catch(…) statement.
In addition I get the following info in the debug output:
1>
Assertion failed: id.ring_index >= -1 && id.ring_index < int(boost::size(interior_rings(polygon))), file c:\program files (x86)\boost\boost_1_66_0\boost\geometry\algorithms\detail\overlay\get_ring.hpp,
line 89
I hope you can use this to make this great library even better.
Thanks a lot
Johan Doré
CTO, Vice President
Agern Allé 24
2970 Hørsholm
Denmark
Mobile: +45 40 53 93 21
Direct: +45 88 20 20 80