Date: Thu, 29 Jun 2006 19:29:16 +0200 From: Matthias Andree <matthias.andree@gmx.de> To: freebsd-hackers@freebsd.org Subject: Re: Return value of malloc(0) Message-ID: <m33bdnhnv7.fsf@merlin.emma.line.org> In-Reply-To: <20060629162319.GA94921@leiferikson.flosken.lan> (Johannes Weiner's message of "Thu, 29 Jun 2006 18:23:19 %2B0200") References: <20060628181045.GA54915@curry.mchp.siemens.de> <20060629054222.GA92895@leiferikson.flosken.lan> <m3bqsceyf2.fsf@merlin.emma.line.org> <20060629162319.GA94921@leiferikson.flosken.lan>
next in thread | previous in thread | raw e-mail | index | archive | help
Johannes Weiner <hnazfoo@googlemail.com> writes: > On Thu, Jun 29, 2006 at 06:09:37PM +0200, Matthias Andree wrote: > >> The value returned from malloc(0) must not be dereferenced whatever it >> was. It was 0x800, which doesn't count as "failure". > > But this would be appropriate for catching the error: > > if ((foo = malloc(0)) == foo) > /* make noise */ > > wouldn't it? No, sir. Operator precedence: assign first, and then compare, thus the comparison will always be true (else you'd be comparing to undefined values, which isn't any better). You might as well write: foo = malloc(0); /* make noise */ There is no way to see a 0x800 return from malloc(0) as "error". -- Matthias Andree
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m33bdnhnv7.fsf>