Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250619125302.GE1827@brightrain.aerifal.cx>
Date: Thu, 19 Jun 2025 08:53:03 -0400
From: Rich Felker <dalias@...c.org>
To: Vincent Lefevre <vincent@...c17.net>,
	Alejandro Colomar <alx@...nel.org>, linux-man@...r.kernel.org,
	musl@...ts.openwall.com, libc-alpha@...rceware.org,
	Paul Eggert <eggert@...ucla.edu>, Bruno Haible <bruno@...sp.org>,
	bug-gnulib@....org
Subject: Re: malloc.3: Clarify realloc(3) standards conformance

On Thu, Jun 19, 2025 at 02:36:13PM +0200, Vincent Lefevre wrote:
> On 2025-06-19 12:54:52 +0200, Alejandro Colomar wrote:
> > +BUGS
> > +       Programmers would naturally expect that realloc(p, n) is consis‐
> > +       tent with free(p) and malloc(n).  This is not explicitly re‐
> > +       quired by POSIX.1‐2024, but all conforming implementations are
> > +       consistent with that.
> > +
> > +       The glibc implementation of realloc() is not consistent with
> > +       that, and as a consequence, it is dangerous to call
> > +       realloc(p, 0) in glibc.
> > +
> > +       A trivial workaround for glibc is calling it as
> > +       realloc(p, n?:1).
> 
> n?:1 is a GNU extension:
> 
> warning: ISO C forbids omitting the middle term of a ‘?:’ expression [-Wpedantic]
> 
> with gcc -pedantic -std=c23, and such code should not be given in
> examples (as a workaround should still be valid for portable code).

Indeed. n?n:1 or n|!n or write it out in a non golf form.

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.