$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: joel_at_[hidden]
Date: 2008-07-17 23:09:03
Author: djowel
Date: 2008-07-17 23:09:03 EDT (Thu, 17 Jul 2008)
New Revision: 47535
URL: http://svn.boost.org/trac/boost/changeset/47535
Log:
fix regression: overflowing int
Text files modified: 
   branches/release/libs/spirit/test/qi/range_run.cpp |    16 ++++++++++------                        
   1 files changed, 10 insertions(+), 6 deletions(-)
Modified: branches/release/libs/spirit/test/qi/range_run.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/range_run.cpp	(original)
+++ branches/release/libs/spirit/test/qi/range_run.cpp	2008-07-17 23:09:03 EDT (Thu, 17 Jul 2008)
@@ -24,21 +24,25 @@
 
     typedef boost::integer_traits<Char> integer_traits;
     Char const const_min = integer_traits::const_min;
-    Char const const_max = integer_traits::const_max;
+    // if Char has same size as unsigned, we back-off 1 bit to not
+    // overflow dynamic_bitset
+    Char const const_max = (sizeof(Char) == sizeof(unsigned)) ?
+        integer_traits::const_max-1 : integer_traits::const_max;
+    unsigned bit_set_size = unsigned(const_max)-unsigned(const_min)+1;
     int const test_size = 1000;
 
     boost::mt19937 rng;
     int min = const_min;
     int max = const_max;
-    boost::uniform_int<> char_(min, max);
-    boost::variate_generator<boost::mt19937&, boost::uniform_int<> >
+    boost::uniform_int<Char> char_(min, max);
+    boost::variate_generator<boost::mt19937&, boost::uniform_int<Char> >
        gen(rng, char_);
-    boost::uniform_int<> _1of10(1, 10);
-    boost::variate_generator<boost::mt19937&, boost::uniform_int<> >
+    boost::uniform_int<Char> _1of10(1, 10);
+    boost::variate_generator<boost::mt19937&, boost::uniform_int<Char> >
        on_or_off(rng, _1of10);
 
     range_run<Char> rr;
-    boost::dynamic_bitset<> bset(int(const_max)-int(const_min)+1);
+    boost::dynamic_bitset<unsigned> bset(bit_set_size);
 
     for (int i = 0; i < test_size; ++i)
     {