Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Aug 1998 13:43:13 -0600
From:      Nate Williams <nate@mt.sri.com>
To:        dag-erli@ifi.uio.no (Dag-Erling Coidan =?iso-8859-1?Q?Sm=F8rgrav?= )
Cc:        Warner Losh <imp@village.org>, hackers@FreeBSD.ORG
Subject:   Re: Realloc fix for review
Message-ID:  <199808201943.NAA07889@mt.sri.com>
In-Reply-To: <xzplnoj8uq9.fsf@skejdbrimir.ifi.uio.no>
References:  <199808201619.KAA20970@harmony.village.org> <xzplnoj8uq9.fsf@skejdbrimir.ifi.uio.no>

next in thread | previous in thread | raw e-mail | index | archive | help
> > Recently, OpenBSD went through their source tree and fixed all
> > instances of
> > 	a = realloc(a, size);
> > with
> > 	na = realloc(a, size);
> > 	if (!na)
> > 		free(a);
> > 	a = na;
> 
> Is that really a good idea? If you free the old block when realloc()
> fails, you lose whatever data was in it (and therefore potentially
> lose the ability to generate a sensible error message or recover
> gracefully).

Umm, reread the code again.  His realloc frees the old block when
realloc *succeeds*, not fails.

However, is there any case when you want to copy the data from the old
pointer into the new pointer, which would also be a lose with the
suggested change.  (I don't know if this is legal or not...)



Naet

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808201943.NAA07889>