This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: operator new[] overflow (PR 19351)


On Thu, Dec 2, 2010 at 2:20 PM, Joe Buck <Joe.Buck@synopsys.com> wrote:
> 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.

I would expect max_size_t/sizeof(T) to be actually an integer
constant that n is compared against.  I would be surprised
if that one-time comparison is noticeable in real applications that
new an array of objects.

>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]