Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 May 2014 15:33:54 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        David Chisnall <theraven@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, Pedro Giffuni <pfg@FreeBSD.org>, Andrey Chernov <ache@freebsd.org>, src-committers <src-committers@freebsd.org>
Subject:   Re: svn commit: r265367 - head/lib/libc/regex
Message-ID:  <7D7A417E-17C3-4001-8E79-0B57636A70E1@gmail.com>
In-Reply-To: <3C7CFFB7-5C84-4AC1-9A81-C718D184E87B@FreeBSD.org>
References:  <201405051641.s45GfFje086423@svn.freebsd.org> <5367CD77.40909@freebsd.org> <B11B5B25-8E05-4225-93D5-3A607332F19A@FreeBSD.org> <5367EB54.1080109@FreeBSD.org> <3C7CFFB7-5C84-4AC1-9A81-C718D184E87B@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help


On May 5, 2014, at 3:21 PM, David Chisnall <theraven@FreeBSD.org> wrote:

> On 5 May 2014, at 20:49, Pedro Giffuni <pfg@FreeBSD.org> wrote:
> 
>> Yes, but I reverted it because there are other ways to check for overflows without the performance hit.
> 
> Do we have a good reusable routine for doing this somewhere?  Clang and gcc both have some idiom recognisers that try to spot when people are attempting to do this.  Clang also has a builtin, which would be good to use when available.  Overflow checking is very cheap on modern CPUs (add, branch on carry), so it would be nice if we could start looking for this malloc() and realloc() pattern and replacing the multiply with something that checks for the error.

reallocf():
     The reallocf() function is identical to the realloc() function, except
     that it will free the passed pointer when the requested memory cannot be
     allocated.  This is a FreeBSD specific API designed to ease the problems
     with traditional coding styles for realloc() causing memory leaks in
     libraries.
...
     The reallocf() function first appeared in FreeBSD 3.0.

Warner


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7D7A417E-17C3-4001-8E79-0B57636A70E1>