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:
>=20
>> Yes, but I reverted it because there are other ways to check for =
overflows without the performance hit.
>=20
> 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>