diff options
Diffstat (limited to 'usr.bin/make/lst.lib')
-rw-r--r-- | usr.bin/make/lst.lib/lstConcat.c | 2 | ||||
-rw-r--r-- | usr.bin/make/lst.lib/lstDestroy.c | 30 | ||||
-rw-r--r-- | usr.bin/make/lst.lib/lstDupl.c | 3 | ||||
-rw-r--r-- | usr.bin/make/lst.lib/lstFind.c | 2 | ||||
-rw-r--r-- | usr.bin/make/lst.lib/lstFindFrom.c | 2 | ||||
-rw-r--r-- | usr.bin/make/lst.lib/lstForEach.c | 2 |
6 files changed, 24 insertions, 17 deletions
diff --git a/usr.bin/make/lst.lib/lstConcat.c b/usr.bin/make/lst.lib/lstConcat.c index 505d49f..cac2d11 100644 --- a/usr.bin/make/lst.lib/lstConcat.c +++ b/usr.bin/make/lst.lib/lstConcat.c @@ -102,6 +102,8 @@ Lst_Concat (l1, l2, flags) list2->firstPtr->prevPtr = list1->lastPtr; if (list1->lastPtr != NilListNode) { list1->lastPtr->nextPtr = list2->firstPtr; + } else { + list1->firstPtr = list2->firstPtr; } list1->lastPtr = list2->lastPtr; } diff --git a/usr.bin/make/lst.lib/lstDestroy.c b/usr.bin/make/lst.lib/lstDestroy.c index 3dedbf1..7b7b4b2 100644 --- a/usr.bin/make/lst.lib/lstDestroy.c +++ b/usr.bin/make/lst.lib/lstDestroy.c @@ -63,7 +63,7 @@ static char sccsid[] = "@(#)lstDestroy.c 8.1 (Berkeley) 6/6/93"; void Lst_Destroy (l, freeProc) Lst l; - register void (*freeProc)(); + register void (*freeProc) __P((ClientData)); { register ListNode ln; register ListNode tln = NilListNode; @@ -76,21 +76,25 @@ Lst_Destroy (l, freeProc) */ return; } - + + /* To ease scanning */ + if (list->lastPtr != NilListNode) + list->lastPtr->nextPtr = NilListNode; + else { + free ((Address)l); + return; + } + if (freeProc) { - for (ln = list->firstPtr; - ln != NilListNode && tln != list->firstPtr; - ln = tln) { - tln = ln->nextPtr; - (*freeProc) (ln->datum); - free ((Address)ln); + for (ln = list->firstPtr; ln != NilListNode; ln = tln) { + tln = ln->nextPtr; + (*freeProc) (ln->datum); + free ((Address)ln); } } else { - for (ln = list->firstPtr; - ln != NilListNode && tln != list->firstPtr; - ln = tln) { - tln = ln->nextPtr; - free ((Address)ln); + for (ln = list->firstPtr; ln != NilListNode; ln = tln) { + tln = ln->nextPtr; + free ((Address)ln); } } diff --git a/usr.bin/make/lst.lib/lstDupl.c b/usr.bin/make/lst.lib/lstDupl.c index 302bb30..152c1d1 100644 --- a/usr.bin/make/lst.lib/lstDupl.c +++ b/usr.bin/make/lst.lib/lstDupl.c @@ -62,7 +62,8 @@ static char sccsid[] = "@(#)lstDupl.c 8.1 (Berkeley) 6/6/93"; Lst Lst_Duplicate (l, copyProc) Lst l; /* the list to duplicate */ - ClientData (*copyProc)(); /* A function to duplicate each ClientData */ + /* A function to duplicate each ClientData */ + ClientData (*copyProc) __P((ClientData)); { register Lst nl; register ListNode ln; diff --git a/usr.bin/make/lst.lib/lstFind.c b/usr.bin/make/lst.lib/lstFind.c index 1efdc54..7d8516a 100644 --- a/usr.bin/make/lst.lib/lstFind.c +++ b/usr.bin/make/lst.lib/lstFind.c @@ -63,7 +63,7 @@ LstNode Lst_Find (l, d, cProc) Lst l; ClientData d; - int (*cProc)(); + int (*cProc) __P((ClientData, ClientData)); { return (Lst_FindFrom (l, Lst_First(l), d, cProc)); } diff --git a/usr.bin/make/lst.lib/lstFindFrom.c b/usr.bin/make/lst.lib/lstFindFrom.c index e1da033..aaa5697 100644 --- a/usr.bin/make/lst.lib/lstFindFrom.c +++ b/usr.bin/make/lst.lib/lstFindFrom.c @@ -65,7 +65,7 @@ Lst_FindFrom (l, ln, d, cProc) Lst l; register LstNode ln; register ClientData d; - register int (*cProc)(); + register int (*cProc) __P((ClientData, ClientData)); { register ListNode tln; Boolean found = FALSE; diff --git a/usr.bin/make/lst.lib/lstForEach.c b/usr.bin/make/lst.lib/lstForEach.c index 9fbdca5..f69b5e2 100644 --- a/usr.bin/make/lst.lib/lstForEach.c +++ b/usr.bin/make/lst.lib/lstForEach.c @@ -64,7 +64,7 @@ static char sccsid[] = "@(#)lstForEach.c 8.1 (Berkeley) 6/6/93"; void Lst_ForEach (l, proc, d) Lst l; - register int (*proc)(); + register int (*proc) __P((ClientData, ClientData)); register ClientData d; { Lst_ForEachFrom(l, Lst_First(l), proc, d); |