Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Aug 1998 21:23:57 -0500 (CDT)
From:      Joel Ray Holveck <joelh@gnu.org>
To:        nate@mt.sri.com
Cc:        dag-erli@ifi.uio.no, imp@village.org, hackers@FreeBSD.ORG
Subject:   Re: Realloc fix for review
Message-ID:  <199808210223.VAA10208@detlev.UUCP>
In-Reply-To: <199808201943.NAA07889@mt.sri.com> (message from Nate Williams on Thu, 20 Aug 1998 13:43:13 -0600)
References:  <199808201619.KAA20970@harmony.village.org> <xzplnoj8uq9.fsf@skejdbrimir.ifi.uio.no> <199808201943.NAA07889@mt.sri.com>

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.

Okay, I must be very confused.  First off, I thought that realloc
already did free the old block.  Second, wouldn't this mean that the
block gets freed if SIZE is less that a's old size?

> 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...)

I must be *really* *really* confused.  Doesn't realloc copy the data?

Best,
joelh

-- 
Joel Ray Holveck - joelh@gnu.org - http://www.wp.com/piquan
   Fourth law of programming:
   Anything that can go wrong wi
sendmail: segmentation violation - core dumped

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?199808210223.VAA10208>