From 7c81abec73c7f3407519c6f8d20e20c2b85e0a5a Mon Sep 17 00:00:00 2001 From: dougb Date: Tue, 17 Jan 2006 08:01:00 +0000 Subject: Fix a "free(): error: chunk is already free" under certain circumstances that include circular dependencies. PR: bin/91789 PR submitted by: Frank Behrens Patch submitted by: Divacky Roman --- sbin/rcorder/rcorder.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'sbin') diff --git a/sbin/rcorder/rcorder.c b/sbin/rcorder/rcorder.c index 4c846e8..14a7707 100644 --- a/sbin/rcorder/rcorder.c +++ b/sbin/rcorder/rcorder.c @@ -1,4 +1,6 @@ +# if 0 /* $NetBSD: rcorder.c,v 1.7 2000/08/04 07:33:55 enami Exp $ */ +#endif /* * Copyright (c) 1998, 1999 Matthew R. Green @@ -34,6 +36,8 @@ */ #include +__FBSDID("$FreeBSD$"); + #include #include @@ -753,7 +757,8 @@ do_file(fnode) r_tmp = r; satisfy_req(r, fnode->filename); r = r->next; - free(r_tmp); + if (was_set == 0) + free(r_tmp); } fnode->req_list = NULL; @@ -792,8 +797,10 @@ do_file(fnode) } DPRINTF((stderr, "nuking %s\n", fnode->filename)); - free(fnode->filename); - free(fnode); + if (was_set == 0) { + free(fnode->filename); + free(fnode); + } } void -- cgit v1.1