[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: lua_newuserdata() and integer overflow
- From: Roberto Ierusalimschy <roberto@...>
- Date: Thu, 15 Jan 2015 13:05:56 -0200
> > Moreover, the only portable way to check multiplication overflow is by
> > doing a division, which is not very efficient.
>
> I express no opinion regarding the addition of a new allocation function.
> But the following is a routine I wrote for use in some of my libraries,
> usually for checking overflow when allocating memory. It's portable C (well,
> see inline comment regarding lobits on how to make it portable) and it was
> about 5x faster than using division on the Intel Core chip I tested it on. I
> believe the treatment of signed integers would be nearly identical and
> equally portable C code, although I can't speak to the additional cost of
> handling signedness.
I stand corrected on that point, thanks for the code. Anyway, that code
is still more expensive than (nelem > MAX_SIZET/size), when 'size' is
a constant. (I have some doubts about signed integers being nearly
identical, but that is besides the point here, where everything is
unsigned). And I think my other points (mainly about overflow being
better handled in an "hollistic" way :-) are still valid.
-- Roberto