From 45f2fd3c01768f6483e4d583e4ca06c8e11362f4 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 5 Sep 2011 18:34:46 +0200 Subject: libdraw: fix old subfont leak --- sys/src/libdraw/stringwidth.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sys/src/libdraw/stringwidth.c') diff --git a/sys/src/libdraw/stringwidth.c b/sys/src/libdraw/stringwidth.c index eb2bb42e7..004b695e7 100644 --- a/sys/src/libdraw/stringwidth.c +++ b/sys/src/libdraw/stringwidth.c @@ -12,6 +12,7 @@ _stringnwidth(Font *f, char *s, Rune *r, int len) Rune rune, **rptr; char *subfontname, **sptr; Font *def; + Subfont *sf; if(s == nil){ s = ""; @@ -23,6 +24,7 @@ _stringnwidth(Font *f, char *s, Rune *r, int len) rptr = nil; }else rptr = &r; + sf = nil; twid = 0; while(len>0 && (*s || *r)){ max = Max; @@ -43,7 +45,8 @@ _stringnwidth(Font *f, char *s, Rune *r, int len) return twid; } if(subfontname){ - if(_getsubfont(f->display, subfontname) == 0){ + freesubfont(sf); + if((sf=_getsubfont(f->display, subfontname)) == 0){ def = f->display->defaultfont; if(def && f!=def) f = def; @@ -56,6 +59,7 @@ _stringnwidth(Font *f, char *s, Rune *r, int len) twid += wid; len -= l; } + freesubfont(sf); return twid; } -- cgit v1.2.3