Index: boost/pool/pool.hpp =================================================================== --- boost/pool/pool.hpp (revision 77362) +++ boost/pool/pool.hpp (working copy) @@ -10,6 +10,8 @@ #define BOOST_POOL_HPP #include // for workarounds +// std::numeric_limits +#include // std::less, std::less_equal, std::greater #include @@ -793,6 +795,8 @@ //! \returns Address of chunk n if allocated ok. //! \returns 0 if not enough memory for n chunks. + if (requested_size && (n > (std::numeric_limits::max)() / requested_size)) + return 0; const size_type partition_size = alloc_size(); const size_type total_req_size = n * requested_size; const size_type num_chunks = total_req_size / partition_size + @@ -975,6 +979,8 @@ { if(max_alloc_size && (n > max_alloc_size)) return 0; + if(chunk_size && (n > (std::numeric_limits::max)() / chunk_size)) + return 0; void* ret = (user_allocator::malloc)(chunk_size * n); used_list.insert(ret); return ret;