From 5f8cacd2de0afc51a4c01a358ed087847f284dda Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 24 Feb 2015 03:25:26 +0100 Subject: libdraw: cleanup getsubfont() --- sys/src/libdraw/getsubfont.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'sys/src') diff --git a/sys/src/libdraw/getsubfont.c b/sys/src/libdraw/getsubfont.c index 8f3b59d50..02634c466 100644 --- a/sys/src/libdraw/getsubfont.c +++ b/sys/src/libdraw/getsubfont.c @@ -9,27 +9,32 @@ Subfont* _getsubfont(Display *d, char *name) { - int fd; + int dolock, fd; Subfont *f; - fd = open(name, OREAD); - if(fd < 0){ - fprint(2, "getsubfont: can't open %s: %r\n", name); - return 0; - } /* * unlock display so i/o happens with display released, unless * user is doing his own locking, in which case this could break things. * _getsubfont is called only from string.c and stringwidth.c, * which are known to be safe to have this done. */ - if(d && d->locking == 0) + dolock = d != nil && d->locking == 0; + if(dolock) unlockdisplay(d); - f = readsubfont(d, name, fd, d && d->locking==0); - if(d && d->locking == 0) + + fd = open(name, OREAD); + if(fd < 0) { + fprint(2, "getsubfont: can't open %s: %r\n", name); + f = nil; + } else { + f = readsubfont(d, name, fd, dolock); + if(f == nil) + fprint(2, "getsubfont: can't read %s: %r\n", name); + close(fd); + } + + if(dolock) lockdisplay(d); - close(fd); - if(f == 0) - fprint(2, "_getsubfont: can't read %s: %r\n", name); + return f; } -- cgit v1.2.3