Opened 11 years ago
Closed 8 years ago
#6507 closed Patches (fixed)
fusion::at missing compile time check and overflows stack
Reported by: | Antony Polukhin | Owned by: | Joel de Guzman |
---|---|---|---|
Milestone: | To Be Determined | Component: | fusion |
Version: | Boost 1.48.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Here are the test cases:
BOOST_AUTO_TEST_CASE(testing_at_c) { boost::fusion::tuple<int, double> t; boost::fusion::at_c<2>(t); // runtime stack overflow } BOOST_AUTO_TEST_CASE(testing_at) { boost::fusion::tuple<int, double> t; boost::fusion::at<boost::mpl::int_<2> >(t); // runtime stack overflow }
Can be fixed, by adding:
typedef typename result_of::size<Sequence>::type size_type; BOOST_STATIC_ASSERT((size_type::value > N::value)); BOOST_STATIC_ASSERT((size_type::value >= 0));
to both fusion::at functions in #include <boost/fusion/sequence/intrinsic/at.hpp>
and including
#include <boost/fusion/sequence/intrinsic/size.hpp> #include <boost/static_assert.hpp>
headers.
Change History (2)
comment:1 by , 9 years ago
Type: | Bugs → Patches |
---|
comment:2 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Fixed by https://github.com/boostorg/fusion/pull/41