diff options
author | Petter Rodhelind <petter.rodhelind@gmail.com> | 2018-04-20 19:39:01 +0200 |
---|---|---|
committer | Petter Rodhelind <petter.rodhelind@gmail.com> | 2018-04-20 19:39:01 +0200 |
commit | 79223bb49d950dc6236b6c79c37fea787e40ba5c (patch) | |
tree | bb85b2a21fa74e8792704b056cc163c38fcc55c2 /src/libdraw/openfont.c | |
parent | c04683ef3aa6e9f42fb279025f231b06b17191f4 (diff) | |
parent | 03a8ec739af17bc4ba0a2e18ea59b33671c34f2b (diff) | |
download | plan9port-79223bb49d950dc6236b6c79c37fea787e40ba5c.tar.gz plan9port-79223bb49d950dc6236b6c79c37fea787e40ba5c.tar.bz2 plan9port-79223bb49d950dc6236b6c79c37fea787e40ba5c.zip |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/libdraw/openfont.c')
-rw-r--r-- | src/libdraw/openfont.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/libdraw/openfont.c b/src/libdraw/openfont.c index b97ea22d..3fe9410a 100644 --- a/src/libdraw/openfont.c +++ b/src/libdraw/openfont.c @@ -31,7 +31,7 @@ openfont1(Display *d, char *name) { Font *fnt; int fd, i, n, scale; - char *buf, *nambuf, *fname, *freename; + char *buf, *nambuf, *nambuf0, *fname, *freename; nambuf = 0; freename = nil; @@ -42,19 +42,21 @@ openfont1(Display *d, char *name) nambuf = smprint("#9/font/%s", fname+14); if(nambuf == nil) return 0; - nambuf = unsharp(nambuf); + nambuf0 = unsharp(nambuf); + if(nambuf0 != nambuf) + free(nambuf); + nambuf = nambuf0; if(nambuf == nil) return 0; if((fd = open(nambuf, OREAD)) < 0){ free(nambuf); return 0; } - fname = nambuf; if(scale > 1) { - name = smprint("%d*%s", scale, fname); + name = smprint("%d*%s", scale, nambuf); freename = name; } else { - name = fname; + name = nambuf; } } if(fd >= 0) @@ -63,13 +65,17 @@ openfont1(Display *d, char *name) fd = _fontpipe(fname+10); n = 128*1024; } - if(fd < 0) + if(fd < 0){ + free(nambuf); + free(freename); return 0; + } buf = malloc(n+1); if(buf == 0){ close(fd); free(nambuf); + free(freename); return 0; } i = readn(fd, buf, n); @@ -77,6 +83,7 @@ openfont1(Display *d, char *name) if(i <= 0){ free(buf); free(nambuf); + free(freename); return 0; } buf[i] = 0; @@ -224,6 +231,7 @@ openfont(Display *d, char *name) if(!f) return nil; f->lodpi = f; + free(f->namespec); f->namespec = namespec; /* add to display list for when dpi changes */ |