projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
upgraded to the latest NetBSD version
[unix-history]
/
usr
/
src
/
usr.bin
/
make
/
lst.lib
/
lstDestroy.c
diff --git
a/usr/src/usr.bin/make/lst.lib/lstDestroy.c
b/usr/src/usr.bin/make/lst.lib/lstDestroy.c
index
58d73af
..
8f00696
100644
(file)
--- a/
usr/src/usr.bin/make/lst.lib/lstDestroy.c
+++ b/
usr/src/usr.bin/make/lst.lib/lstDestroy.c
@@
-9,7
+9,7
@@
*/
#ifndef lint
*/
#ifndef lint
-static char sccsid[] = "@(#)lstDestroy.c 8.
1
(Berkeley) %G%";
+static char sccsid[] = "@(#)lstDestroy.c 8.
2
(Berkeley) %G%";
#endif /* not lint */
/*-
#endif /* not lint */
/*-
@@
-37,7
+37,7
@@
static char sccsid[] = "@(#)lstDestroy.c 8.1 (Berkeley) %G%";
void
Lst_Destroy (l, freeProc)
Lst l;
void
Lst_Destroy (l, freeProc)
Lst l;
- register void (*freeProc)
(
);
+ register void (*freeProc)
__P((ClientData)
);
{
register ListNode ln;
register ListNode tln = NilListNode;
{
register ListNode ln;
register ListNode tln = NilListNode;
@@
-50,21
+50,25
@@
Lst_Destroy (l, freeProc)
*/
return;
}
*/
return;
}
-
+
+ /* To ease scanning */
+ if (list->lastPtr != NilListNode)
+ list->lastPtr->nextPtr = NilListNode;
+ else {
+ free ((Address)l);
+ return;
+ }
+
if (freeProc) {
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 {
}
} 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);
}
}
}
}