On Wed, Dec 01, 2010 at 10:26:58PM -0800, Florian Weimer wrote: > * Chris Lattner: > > > On overflow it just forces the size passed in to operator new to > > -1ULL, which throws bad_alloc. > > This is also what my patch tries to implement.
Yes, but Chris's code just checks the overflow of the multiply. Your patch achieves the same result in a more complex way, by computing the largest non-overflowing value of n in new T[n]; and comparing n against that. Even though max_size_t/sizeof T is a compile-time constant, this is still more expensive.