Close small font leak.
[rsc] --rw-rw-r-- M 261901 glenda sys 3166 Nov 3 12:05 sys/src/libdraw/string.c
/n/sourcesdump/2005/1103/plan9/sys/src/libdraw/string.c:65,70 -
/n/sourcesdump/2005/1104/plan9/sys/src/libdraw/string.c:65,71
char **sptr;
Rune **rptr;
Font *def;
+ Subfont *sf;
if(s == nil){
s = "";
/n/sourcesdump/2005/1103/plan9/sys/src/libdraw/string.c:76,81 -
/n/sourcesdump/2005/1104/plan9/sys/src/libdraw/string.c:77,83
rptr = nil;
}else
rptr = &r;
+ sf = nil;
while((*s || *r) && len){
max = Max;
if(len < max)
/n/sourcesdump/2005/1103/plan9/sys/src/libdraw/string.c:124,136 -
/n/sourcesdump/2005/1104/plan9/sys/src/libdraw/string.c:126,143
len -= n;
}
if(subfontname){
- if(_getsubfont(f->display, subfontname) == 0){
- def = f->display->defaultfont;
+ freesubfont(sf);
+ if((sf=_getsubfont(f->display, subfontname)) == 0){
+ def = f->display ? f->display->defaultfont : nil;
if(def && f!=def)
f = def;
else
break;
}
+ /*
+ * must not free sf until cachechars has found it in the cache
+ * and picked up its own reference.
+ */
}
}
return pt;
|