From owner-freebsd-hackers Thu Aug 20 19:25:01 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA15403 for freebsd-hackers-outgoing; Thu, 20 Aug 1998 19:25:01 -0700 (PDT) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from mail.camalott.com (mail.camalott.com [208.203.140.2]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA15394 for ; Thu, 20 Aug 1998 19:24:58 -0700 (PDT) (envelope-from joelh@gnu.org) Received: from detlev.UUCP (tex-73.camalott.com [208.229.74.73]) by mail.camalott.com (8.8.7/8.8.5) with ESMTP id VAA29110; Thu, 20 Aug 1998 21:25:38 -0500 Received: (from joelh@localhost) by detlev.UUCP (8.9.1/8.9.1) id VAA10208; Thu, 20 Aug 1998 21:23:57 -0500 (CDT) (envelope-from joelh) Date: Thu, 20 Aug 1998 21:23:57 -0500 (CDT) Message-Id: <199808210223.VAA10208@detlev.UUCP> To: nate@mt.sri.com CC: dag-erli@ifi.uio.no, imp@village.org, hackers@FreeBSD.ORG In-reply-to: <199808201943.NAA07889@mt.sri.com> (message from Nate Williams on Thu, 20 Aug 1998 13:43:13 -0600) Subject: Re: Realloc fix for review From: Joel Ray Holveck Reply-to: joelh@gnu.org References: <199808201619.KAA20970@harmony.village.org> <199808201943.NAA07889@mt.sri.com> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG >>> 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