summaryrefslogtreecommitdiffstats
path: root/usr.bin/make/lst.lib
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/make/lst.lib')
-rw-r--r--usr.bin/make/lst.lib/lstConcat.c2
-rw-r--r--usr.bin/make/lst.lib/lstDestroy.c30
-rw-r--r--usr.bin/make/lst.lib/lstDupl.c3
-rw-r--r--usr.bin/make/lst.lib/lstFind.c2
-rw-r--r--usr.bin/make/lst.lib/lstFindFrom.c2
-rw-r--r--usr.bin/make/lst.lib/lstForEach.c2
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);
OpenPOWER on IntegriCloud