196 |
|
sprintf(errmsg, "cannot open ambient file \"%s\"", ambfile); |
197 |
|
error(SYSTEM, errmsg); |
198 |
|
} |
199 |
– |
#ifdef getc_unlocked |
200 |
– |
flockfile(ambfp); /* application-level lock */ |
201 |
– |
#endif |
199 |
|
#ifdef F_SETLKW |
200 |
|
aflock(F_UNLCK); /* release file */ |
201 |
|
#endif |
216 |
|
lastpos = -1; |
217 |
|
} |
218 |
|
/* free ambient tree */ |
219 |
< |
unloadatree(&atrunk, &avfree); |
219 |
> |
unloadatree(&atrunk, avfree); |
220 |
> |
freeambtree(NULL); |
221 |
|
/* reset state variables */ |
222 |
|
avsum = 0.; |
223 |
|
navsum = 0; |
1085 |
|
AMBTREE *atp |
1086 |
|
) |
1087 |
|
{ |
1088 |
< |
atp->kid = atfreelist; |
1088 |
> |
if (atp == NULL) { /* freeing free list? */ |
1089 |
> |
while ((atp = atfreelist) != NULL) { |
1090 |
> |
atfreelist = atp->kid; |
1091 |
> |
free(atp); |
1092 |
> |
} |
1093 |
> |
return; |
1094 |
> |
} |
1095 |
> |
atp->kid = atfreelist; /* else push node onto free list */ |
1096 |
|
atfreelist = atp; |
1097 |
|
} |
1098 |
|
|
1234 |
|
oldatrunk = atrunk; |
1235 |
|
atrunk.alist = NULL; |
1236 |
|
atrunk.kid = NULL; |
1237 |
< |
unloadatree(&oldatrunk, &avinsert); |
1237 |
> |
unloadatree(&oldatrunk, avinsert); |
1238 |
|
} |
1239 |
|
} else { /* sort memory by last access time */ |
1240 |
|
/* |
1251 |
|
eputs(errmsg); |
1252 |
|
#endif |
1253 |
|
i_avlist = 0; |
1254 |
< |
unloadatree(&atrunk, &av2list); /* empty current tree */ |
1254 |
> |
unloadatree(&atrunk, av2list); /* empty current tree */ |
1255 |
|
#ifdef DEBUG |
1256 |
|
if (i_avlist < nambvals) |
1257 |
|
error(CONSISTENCY, "missing ambient values in sortambvals"); |