Date: Sat, 9 Aug 1997 20:07:55 +0400 (MSD) From: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/4254: make in free(): warning: chunk is already free Message-ID: <199708091607.UAA18642@tejblum.dnttm.rssi.ru> Resent-Message-ID: <199708091610.JAA29903@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 4254
>Category: bin
>Synopsis: make in free(): warning: chunk is already free
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Aug 9 09:10:01 PDT 1997
>Last-Modified:
>Originator: Dmitrij Tejblum
>Organization:
>Release: FreeBSD 3.0-CURRENT-src-cur-2995 i386
>Environment:
>Description:
When all transformation rules to or from a suffix disappeared, make tries
to free the suffix. I think, it is a very strange idea. (Or, maybe, it is a
POSIX requirement?) And it is done incorrectly. Apparently, it even don't
update the list of known suffixes (but it is an other bug).
>How-To-Repeat:
Try following Makefile:
-----------------------cut here----------
.SUFFIXES: .xxx
.xxx.c:
aaaa: bbbbb
------------------------cut here---------
>Fix:
--- suff.c.00 Wed Mar 12 12:44:53 1997
+++ suff.c Sat Aug 9 19:26:04 1997
@@ -160,7 +160,6 @@
static int SuffSuffHasNameP __P((ClientData, ClientData));
static int SuffSuffIsPrefix __P((ClientData, ClientData));
static int SuffGNHasNameP __P((ClientData, ClientData));
-static void SuffUnRef __P((ClientData, ClientData));
static void SuffFree __P((ClientData));
static void SuffInsert __P((Lst, Suff *));
static void SuffRemove __P((Lst, Suff *));
@@ -327,20 +326,6 @@
/*********** Maintenance Functions ************/
-static void
-SuffUnRef(lp, sp)
- ClientData lp;
- ClientData sp;
-{
- Lst l = (Lst) lp;
-
- LstNode ln = Lst_Member(l, sp);
- if (ln != NILLNODE) {
- Lst_Remove(l, ln);
- ((Suff *) sp)->refCount--;
- }
-}
-
/*-
*-----------------------------------------------------------------------
* SuffFree --
@@ -383,8 +368,7 @@
* None
*
* Side Effects:
- * The reference count for the suffix is decremented and the
- * suffix is possibly freed
+ * The reference count for the suffix is decremented
*-----------------------------------------------------------------------
*/
static void
@@ -392,9 +376,11 @@
Lst l;
Suff *s;
{
- SuffUnRef((ClientData) l, (ClientData) s);
- if (s->refCount == 0)
- SuffFree((ClientData) s);
+ LstNode ln = Lst_Member(l, (ClientData)s);
+ if (ln != NILLNODE) {
+ Lst_Remove(l, ln);
+ s->refCount--;
+ }
}
/*-
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708091607.UAA18642>
