diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-04-30 11:48:30 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-04-30 11:48:30 +0200 |
commit | 748bdc13b2697e3e86c5955d2eb39e1f7c40f93e (patch) | |
tree | bd25aa38aad5912b1898449155cdbb9deaeaeb76 /sys/src/cmd/faces/facedb.c | |
parent | a124609b6e7ad036c53360623b5fdefba58fe4b4 (diff) |
faces: fix memory leaks
Diffstat (limited to 'sys/src/cmd/faces/facedb.c')
-rw-r--r-- | sys/src/cmd/faces/facedb.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/src/cmd/faces/facedb.c b/sys/src/cmd/faces/facedb.c index 8cbb1a79d..380670fbf 100644 --- a/sys/src/cmd/faces/facedb.c +++ b/sys/src/cmd/faces/facedb.c @@ -270,8 +270,10 @@ tryfindfiledir(char *dom, char *user, char *dir) * Ignore 512x512 directories. * Save 48x48 directories for later. */ - if((fd = open(dir, OREAD)) < 0) + if((fd = open(dir, OREAD)) < 0){ + free(dom); return nil; + } while((n = dirread(fd, &d)) > 0){ for(i=0; i<n; i++){ if((d[i].mode&DMDIR) @@ -288,6 +290,7 @@ tryfindfiledir(char *dom, char *user, char *dir) free(dom); return x; } + free(ndir); } } free(d); @@ -340,8 +343,12 @@ findfile(Face *f, char *dom, char *user) } if(dom == nil) dom = facedom; - if(homeface == nil) - homeface = smprint("%s/lib/face", getenv("home")); + if(homeface == nil){ + if((p = getenv("home")) != nil){ + homeface = smprint("%s/lib/face", p); + free(p); + } + } f->unknown = 0; if((p = tryfindfile(dom, user)) != nil) @@ -575,4 +582,5 @@ findbit(Face *f) replclipr(f->bit, 1, Rect(0, 0, Facesize, Facesize)); f->mask = nil; } + free(fn); } |