|
Message-ID: <20140519165523.GP507@brightrain.aerifal.cx> Date: Mon, 19 May 2014 12:55:23 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: thoughts on reallocarray, explicit_bzero? On Mon, May 19, 2014 at 06:25:57PM +0200, Szabolcs Nagy wrote: > i'd use a saturated multiplication, because malloc/realloc > are not the only places where overflowing size calculations > may cause problems and in such cases (size_t)-1 is just as > good as a failure and it can be added to your code without > portability issues > > static size_t sizemul(size_t a, size_t b) > { > return b>1 && a>1 && a>-1/b ? -1 : a*b; > } On 32-bit this can easily be optimized to just one conditional instead of three: uint64_t tmp = (uint64_t)a * b; return tmp>SIZE_MAX ? SIZE_MAX : tmp; Of course that requires an ifdef, which is perhaps ugly. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.