exportfs: simplify freefile() code

remove impossible checks, rewrite as while loop.
This commit is contained in:
cinap_lenrek 2014-08-02 19:22:10 +02:00
parent b185d2fe5c
commit 5302e88796

View file

@ -587,30 +587,25 @@ freefile(File *f)
{ {
File *parent, *child; File *parent, *child;
Loop: while(--f->ref == 0){
f->ref--;
if(f->ref > 0)
return;
freecnt++; freecnt++;
if(f->ref < 0) abort();
DEBUG(DFD, "free %s\n", f->name); DEBUG(DFD, "free %s\n", f->name);
/* delete from parent */ /* delete from parent */
parent = f->parent; parent = f->parent;
if(parent->child == f) if(parent->child == f)
parent->child = f->childlist; parent->child = f->childlist;
else{ else{
for(child=parent->child; child->childlist!=f; child=child->childlist) for(child = parent->child; child->childlist != f; child = child->childlist) {
if(child->childlist == nil) if(child->childlist == nil)
fatal("bad child list"); fatal("bad child list");
}
child->childlist = f->childlist; child->childlist = f->childlist;
} }
freeqid(f->qidt); freeqid(f->qidt);
free(f->name); free(f->name);
f->name = nil;
free(f); free(f);
f = parent; f = parent;
if(f != nil) }
goto Loop;
} }
File * File *
@ -744,8 +739,7 @@ freeqid(Qidtab *q)
ulong h; ulong h;
Qidtab *l; Qidtab *l;
q->ref--; if(--q->ref)
if(q->ref > 0)
return; return;
qfreecnt++; qfreecnt++;
h = qidhash(q->path); h = qidhash(q->path);